2012-06-02 29 views
1

我有一個基於OSGi的服務器端應用程序,它使用文件系統來存儲腳本和配置數據。有沒有簡單的方法使用JCR API使用文件系統?

隨着時間的推移,我想將該應用程序遷移到「雲端」,並且目前對文件系統訪問的依賴性不太好。

我想要做的是在這個應用程序中插入一個JCR層,所以它仍然能夠在當前情況下工作(本地文件系統上的常規文件),但是會爲雲情況鋪平道路。

我確實找到了file connector in modeshape,但是我遇到了一個非常嚴重的incompatibility with OSGi,這個問題還沒有解決。此外,ModeShape引入了大量的依賴關係(我認爲大約6 MB),這對我來說是一個問題。

所以我除了開始破解我自己的JCR實現之外沒有看到任何其他選項,我不願意這麼做。

任何想法?

回答

2

儘管您不會直接使用JCR,但使用Apache Sling ResourceProvider機制應該可以讓您輕鬆地從文件系統移到其他的東西,而且它對OSGi友好,因爲Sling是基於OSGi的100%。

您可以通過使用吊索的文件系統資源提供者(http://sling.apache.org/site/accessing-filesystem-resources-extensionsfsresource.html)從現在開始,後來轉移到自己的自定義ResourceProvider,根據需要。

文件系統提供的源代碼是https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/fsresource - 這是很簡單的代碼,可以用來作爲創建你自己的ResourceProvider一個例子。

爲您定製系統的問題是,你需要多少吊帶束來獲取工作 - 我不知道把我的頭頂部,但建議使用吊索Launchpad中找出來,它推出香草吊帶系統中有許多你不需要的bundle,但是你可以嘗試將其降低到最小,這仍然允許ResourceProvider機制的工作。

+0

太棒了!我已經研究過Sling(我甚至將其他人引入Sling),但不知何故,我錯過了這一功能,所以我認爲這個功能只能由Modeshape提供。 –

1

您也可以使用Apache Commons VFS2,例如有一個JCR連接器,或者您可以使用webdav或JDBC表。我在一個商業項目中在共享JDBC表頂部的一個原子(git like)樹上使用它。

相關問題