2016-10-22 12 views
1

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! 

enter image description here

내가 자바 코드를 통해 연결을 시도 : 같은 코드 그러나이 같은 소스로 HTML/XHTML 출력에 빈 페이지

,536,913 63,210
JcrUtils.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이므로 위 시나리오가 유효한 것으로 가정합니다.

답변

0

나는 이런 식으로 일하는 jackrabbit 오크의 예를 보지 못했습니다. 응용 프로그램 외부에서 참나무를 시작할 수 있습니까? 영구 저장소를 어떻게 설정합니까? (어느 쪽을 사용 하시겠습니까?). 당신은 (가장 강력한) 백엔드로 MongoDB를 사용하는 경우 예를 들어 https://jackrabbit.apache.org/oak/docs/construct.html

가 먼저

Db db = new MongoClient(ip, port).getDB("testDB"); 
를 통해 DB에 연결 : 여기에

는 일반적으로 잭 래빗 오크를 설정하는 방법 링크입니다

여기서 ip는 포트가있는 MongoDB-server의 IP 주소입니다. Java 코드가 실행중인 것처럼이 서버가 동일한 시스템에있을 필요는 없습니다. 하나의 MongoDB 인스턴스 대신 Replica 세트를 사용할 수도 있습니다. 관계형 데이터베이스를 사용하여 동일하게 유효합니다.tar-file 시스템 백엔드를 선택한 경우에만 로컬 시스템으로 제한됩니다. 그런 다음 두 번째 단계에서 선택한 백엔드를 기반으로 jcr을 만듭니다 (링크 참조)

+0

그래, 적어도 문서에서 말하는 것입니다. http://jackrabbit.apache.org/oak/docs/use_getting_started.html "참나무에는 실행 가능한 항아리가 있습니다"및 https://github.com/apache/jackrabbit-oak/blob/trunk/oak-run/README을 참조하십시오. .md -> "서버"모드. 실행 파일은 JR2와 동일한 옵션을 사용하지만, JR2와 함께 작동하지만 오크에서는 즉시 작동하지 않습니다. –

+0

링크별로 로컬 저장소를 구성하는 것이 이미 저에게 잘 작동하고 있습니다. 그러나 원격 저장소를 사용하면 작동하지 않습니다. 아파치 슬링이 그 최선의 접근법이 될 수 있다는 정보가 있습니다 .510166.n4.nabble.com/How-to-connect-to-OAK-standalone-server-td4663274.html –

+0

Re : " 영구 저장소를 어떻게 설정합니까? " -> 테스트 용 메모리 저장소. 그건 중요하지 않지만, 나는 단지 원격 저장소에 연결하기를 원한다. 따라서 클라이언트는 기본 저장소 기술에 신경을 쓰면 안된다. –

1

빈 페이지는 브라우저가 <title/> 태그를 구문 분석 할 수없는 결과입니다.

브라우저가 어떻게 태그를 잘못 해석했는지 확인하려면 개발자 모드로 이동하십시오.

Incorrect interpretation of title tag