2015-07-27 5 views
0

Чтобы создать узлы JCR, мы пытаемся программно подключиться к удаленному экземпляру AEM с помощью метода JcrUtils.getRepository(...) для получения дескриптора экземпляра репозитория.Подключение к защищенному удаленному хранилищу AEM

Этот экземпляр обеспеченными и проверяет куки в запросе, чтобы позволить пользователю в.

Есть ли способ передать куки в JcrUtils (или другие способы подключения к репозиторию AEM)?

Сейчас, когда работает код JcrUtils.getRepository("http://host:port/crx/server"); он просто бросает следующее исключение:

javax.jcr.RepositoryException: Unable to access a repository with the following settings: 
    org.apache.jackrabbit.repository.uri: https://<host>:<port>/crx/server 
The following RepositoryFactory classes were consulted: 
    org.apache.jackrabbit.jcr2dav.Jcr2davRepositoryFactory: declined 
    org.apache.jackrabbit.jcr2spi.Jcr2spiRepositoryFactory: declined 
    org.apache.jackrabbit.commons.JndiRepositoryFactory: declined 
    org.apache.jackrabbit.core.RepositoryFactoryImpl: declined 
    org.apache.jackrabbit.rmi.repository.RmiRepositoryFactory: failed 
because of RemoteRuntimeException: java.rmi.RemoteException: Failed to read the resource at URL https://<host>:<port>/crx/server; nested exception is: 
    java.io.StreamCorruptedException: invalid stream header: 3C21444F 
because of RemoteException: Failed to read the resource at URL https://<host>:<port>/crx/server; nested exception is: 
    java.io.StreamCorruptedException: invalid stream header: 3C21444F 
because of StreamCorruptedException: invalid stream header: 3C21444F 
Perhaps the repository you are trying to access is not available at the moment. 
    at org.apache.jackrabbit.commons.JcrUtils.getRepository(JcrUtils.java:223) 
    at org.apache.jackrabbit.commons.JcrUtils.getRepository(JcrUtils.java:263) 
... 
+0

Можете ли вы ударить «https: // : /CRX/сервер» в браузере и проверить, загружается ли это? – Sabya

ответ

1

Там нет никакого способа, чтобы пройти через куки JcrUtils.getRepository(...) он принимает URI в виде строки.

В ваших журналах выглядит как org.apache.jackrabbit.jcr2dav.Jcr2davRepositoryFactory не существует в пути класса приложения. Убедитесь, что вы добавили к зависимостям следующего ЛИЭСУ

  • Jackrabbit-JCR-фонд
  • Jackrabbit-jcr2dav

в случае, если вы используете Maven:

<dependency> 
    <groupId>org.apache.jackrabbit</groupId> 
    <artifactId>jackrabbit-jcr-commons</artifactId> 
    <version>2.10.1</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.jackrabbit</groupId> 
    <artifactId>jackrabbit-jcr2dav</artifactId> 
    <version>2.10.1</version> 
</dependency> 
1

Я получаю аналогичный вопрос как @ user3239244, но только в случае https. Я пытаюсь получить доступ к хранилищу из отдельного приложения Java

repository = JcrUtils.getRepository(url) 

работает для http и не для https

Из журналов:

javax.jcr.RepositoryException: Не удается получить доступ к хранилищу с следующие настройки: org.apache.jackrabbit.repository.uri: https://localhost:5433/crx/server Следующие классы RepositoryFactory Были проведены консультации: org.apache.jackrabbit.jcr2dav.Jcr2davRepositoryFactory: снизился org.apache.jackrabbit.jcr2spi.Jcr2spiRepositoryFactory: снизился org.apache.jackrabbit.commons.JndiRepositoryFactory: отказался org.apache.jackrabbit.core.RepositoryFactoryImpl: отказался org.apache.jackrabbit.rmi.repository.RmiRepositoryFactory: не удалось из-за RepositoryException: Не удалось прочитать ресурс по URL https://localhost:5433/crx/server из-за SSLHandshakeException: sun.security.validator.ValidatorException: PKIX здание путь не удалось: sun.security .provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенной цели из-за ValidatorException: Не удалось создать путь PKIX: sun.security.provider.certpath.SunCertPathBuilderException: не удалось найти правильный путь сертификации к запрошенной цели из-за SunCertPathBuilderException: не удалось найти правильный путь сертификации к запрошенной цели