How to create repository instance in JackRabbit Oak using MicroKernel

1.3k Views Asked by At

According to JackRabbit Oak official documentation, one of the ways of creating Repository instance is to create a MicroKernel object and pass it to JCR's parameterized constructor like this:

MicroKernel kernel = ...;
Repository repository = new Jcr(kernel).createRepository();

But looking at the JCR class javadocs, i can't find any constructor which takes an object of type MicroKernel.
So my questions is :

  • How can we get a repository object using MicroKernel in JackRabbit Oak(not JackRabbit 2.0).

Note: I want a repository which uses normal file system as the content storage medium.

2

There are 2 best solutions below

3
On

Try to use the MicroKernelImpl public no-arg constructor to create an in-memory kernel instance:

MicroKernel kernel = new MicroKernelImpl();
Repository repository = new Jcr(kernel).createRepository();

Alternativelly, you can use the OAK class entry to create a Repository:

MicroKernel kernel = new MicroKernelImpl();
Repository repo = new Oak(kernel).createRepository();
0
On

The documentations is unfortunately lagging behind in some areas. The MicroKernel interface has been superseded by the NodeStoreinterface in Oak.

For file system persistence you'd use the SegmentNodeStore. Have a look at how the respective test cases set up the repository.

In a nutshell:

File directory = ...
NodeStore store = new FileStore(directory, 1, false);
Jcr jcr = new Jcr(new Oak(new SegmentNodeStore(store)));