Question

This code snippet:

Repository repository = JcrUtils.getRepository("http://localhost:8080");
Session session = repository.login(new SimpleCredentials("admin",
                    "admin".toCharArray()));

gives the following exception:

javax.jcr.LoginException: Login failed: Unknown workspace 'null'.
    at org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:799)
    at org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:748)
    at org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:309)
    at org.apache.jackrabbit.jcr2spi.RepositoryImpl.login(RepositoryImpl.java:151)
    at org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:144)

when run against a vanilla sling built from sources. If I add , "default" to the login call, it mutates to:

javax.jcr.ItemNotFoundException: Not Found
    at org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConverter.java:100)
    at org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConverter.java:51)
    at org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConverter.java:45)
    at org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:804)
    at org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:748)
    at org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:309)
    at org.apache.jackrabbit.jcr2spi.RepositoryImpl.login(RepositoryImpl.java:151)

How am I supposed to use a sling repository from a JCR client?

Was it helpful?

Solution

Assuming you want to access the repository remotely via DavEx (as per http://wiki.apache.org/jackrabbit/RemoteAccess), the default URL is http://localhost:8080/server

It's the org.apache.sling.jcr.davex bundle that's providing this bridge to the Jackrabbit DavEx protocol.

OTHER TIPS

Repository repository = JcrUtils.getRepository("http://localhost:8080");
Session session = repository.login(new SimpleCredentials("admin", "admin".toCharArray()), "crx.default");
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top