Pergunta

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?

Foi útil?

Solução

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.

Outras dicas

Repository repository = JcrUtils.getRepository("http://localhost:8080");
Session session = repository.login(new SimpleCredentials("admin", "admin".toCharArray()), "crx.default");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top