Jackrabbit 및 Jackrabbit Oak에 완전히 익숙합니다. 다른 JCR 호환 오픈 소스 컨텐트 저장소 인 Alfresco에서는 많은 일을했습니다.Jackrabbit Oak : RMI를 통해 시작하고 독립형 저장소에 연결
독립 실행 형 Jackrabbit Oak Repo를 시작한 다음 Java 코드를 통해 연결하려고합니다. 불행히도 오크 문서는 아주 드물다.
이 나는 오크의 repo를 체크 아웃 mvn clean install
로 구축 한 후 통해 (메모리 저장소 테스트를위한 순간에 나를 위해 괜찮습니다) 독립 서버를 실행 : 내가 볼 나는 http://localhost:8080/을 열 때
$ java -jar oak-run-1.6-SNAPSHOT.jar server
Apache Jackrabbit Oak 1.6-SNAPSHOT
Starting Oak-Memory repository -> http://localhost:8080/
13:14:38.317 [main] WARN o.a.j.s.r.d.ProtectedRemoveManager - protectedhandlers-config is missing -> DIFF processing can fail for the Remove operation if the content toremove is protected!
내가 자바 코드를 통해 연결을 시도 : 같은 코드 그러나이 같은 소스로 HTML/XHTML 출력에 빈 페이지
,536,913 63,210JcrUtils.getRepository("http://localhost:8080");
// or
JcrUtils.getRepository("http://localhost:8080/rmi");
하지만 점점 :
이Connecting to http://localhost:8080
Exception in thread "main" javax.jcr.RepositoryException: Unable to access a repository with the following settings:
org.apache.jackrabbit.repository.uri: http://localhost:8080
The following RepositoryFactory classes were consulted:
org.apache.jackrabbit.oak.jcr.OakRepositoryFactory: declined
org.apache.jackrabbit.commons.JndiRepositoryFactory: declined
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)
at Main.main(Main.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
(오크 문서는 잭 래빗 문서로 완전하지 않다, 그러나 완전한 이후 나는 또한 오크 여전히 유효 어떻게 잭 래빗 2의 많이하지 확신 다시 작성하십시오.)
same question in the mailing list/Nabble이 발견되었지만 제공된 응답은 원격 독립형 저장소를 사용하지 않지만 동일한 서블릿 컨테이너와 심지어 응용 프로그램에서 실행중인 로컬 응답을 사용합니다 (결국 Mongo DB/노드 저장소가 구성됩니다). 먼 곳이지만 몽고 항구가 필요하다는 것을 의미합니다. 열리다). 그래서 응용 프로그램은 저의 경우가 아닌 저장소 자체를 만듭니다 (이 경우는 Oak에서 잘 작동합니다).
이 Jackrabbit2 (안 오크)에서, 나는 단순히Repository repo = new URLRemoteRepository("http://localhost:8080/rmi");
를 통해 연결할 수 있습니다 그것은 잘 작동,하지만이 방법은 오크 사용할 수 없습니다 것 같습니다.
RMI는 Oak에서 기본적으로 활성화되어 있지 않습니까? 사용할 다른 URI가 있습니까?
그러나 "은"오크에는 실행 가능한 병이 있습니다. "라고 말하면 runnable jar은 서버를 시작하는 방법이 server
이므로 위 시나리오가 유효한 것으로 가정합니다.
그래, 적어도 문서에서 말하는 것입니다. http://jackrabbit.apache.org/oak/docs/use_getting_started.html "참나무에는 실행 가능한 항아리가 있습니다"및 https://github.com/apache/jackrabbit-oak/blob/trunk/oak-run/README을 참조하십시오. .md -> "서버"모드. 실행 파일은 JR2와 동일한 옵션을 사용하지만, JR2와 함께 작동하지만 오크에서는 즉시 작동하지 않습니다. –
링크별로 로컬 저장소를 구성하는 것이 이미 저에게 잘 작동하고 있습니다. 그러나 원격 저장소를 사용하면 작동하지 않습니다. 아파치 슬링이 그 최선의 접근법이 될 수 있다는 정보가 있습니다 .510166.n4.nabble.com/How-to-connect-to-OAK-standalone-server-td4663274.html –
Re : " 영구 저장소를 어떻게 설정합니까? " -> 테스트 용 메모리 저장소. 그건 중요하지 않지만, 나는 단지 원격 저장소에 연결하기를 원한다. 따라서 클라이언트는 기본 저장소 기술에 신경을 쓰면 안된다. –