我是Jackrabbit和Jackrabbit Oak的全新產品。我和Alfresco一起工作了很多,另一個符合JCR標準的開源內容回購。Jackrabbit Oak:開始並通過RMI連接到獨立版本庫
我想開始一個獨立的Jackrabbit Oak repo,然後通過Java代碼連接到它。不幸的是,Oak的文檔很少。
我檢查了橡樹回購,用mvn clean install
建造它,然後跑了獨立服務器(存儲庫是爲我好,此刻進行測試)通過:
$ 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!
當我打開http://localhost:8080/我看到了
我嘗試通過Java代碼來連接:用這樣的代碼,但HTML/XHTML輸出作爲源這樣的空白頁
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,但是提供的答案沒有使用遠程獨立存儲庫,而是使用同一個servlet容器甚至應用程序運行的本地存儲庫(最終配置了Mongo DB/Node存儲庫作爲遙遠的,但這意味着蒙古港口將需要開放)。所以這個應用程序創建了存儲庫本身,這不是我的情況(我在Oak中也得到了這種情況)。
在Jackrabbit2(不是橡木),我可以簡單地通過
Repository repo = new URLRemoteRepository("http://localhost:8080/rmi");
連接,它的工作很好,但這種方法並不適用於橡樹,它似乎。
Oak在默認情況下是否未啓用RMI?是否有使用不同的URI?
然而,documentation of Oak說:「橡樹帶有一個可運行罐子」和runnable jar提供server
方法來啓動服務器,所以我認爲我上面的場景是一個有效的。
是的,非常確定,至少這就是文檔所說的。請參閱http://jackrabbit.apache.org/oak/docs/use_getting_started.html「Oak帶有可運行jar」和https://github.com/apache/jackrabbit-oak/blob/trunk/oak-run/README .md - >「服務器」模式。可運行使用JR2使用的相同選項,但它可以與JR2一起使用,但不能與Oak一起使用。 –
根據您的鏈接構建本地存儲庫對我來說已經很好,我之前也是這樣做的。但使用遠程存儲庫不起作用。我在這裏得到了一些信息,Apache Sling可能是最好的方法http://jackrabbit.510166.n4.nabble.com/How-to-connect-to-OAK-standalone-server-td4663274.html –
Re:「你如何建立持久性商店?「 - >內存商店,只是爲了測試。這應該不重要,但我只想連接到遠程回購,因此客戶不應該關心底層存儲技術。 –