2012-06-02 23 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)树上使用它。

相关问题