有没有一种使用JCR API使用文件系统的简单方法?

时间:2012-06-02 10:19:31

标签: jackrabbit jcr modeshape

我有一个基于OSGi的服务器端应用程序,它使用文件系统来存储脚本和配置数据。

随着时间的推移,我想将该应用程序移动到“云端”,而且它对文件系统访问的当前依赖性不会很好。

我想要做的是在这个应用程序中插入一个JCR层,因此它仍然可以在当前情况下工作(本地文件系统上的常规文件),但是会为云情况铺平道路。

我确实找到了file connector in modeshape,但我遇到了一个非常严重的incompatibility with OSGi,但尚未解决。此外,ModeShape引入了很多依赖项(我认为大约6 MB),这对我来说是一个问题。

所以除了开始破解我自己的JCR实现之外,我没有看到任何选项,我不愿意这样做。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

虽然您不会直接使用JCR,但是使用Apache Sling ResourceProvider机制应该允许您以后轻松地从文件系统移动到其他东西,并且它是OSGi友好的,因为Sling是100%基于OSGi。

您现在可以使用Sling的Filesystem资源提供程序(http://sling.apache.org/site/accessing-filesystem-resources-extensionsfsresource.html)开始,然后根据需要移动到您自己的自定义ResourceProvider。

文件系统提供程序的源代码位于https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/fsresource - 这是非常简单的代码,可用作创建自己的ResourceProvider的示例。

对于您的自定义系统,问题是您需要多少Sling捆绑才能实现这一目标 - 我不知道我的头脑但是建议使用Sling Launchpad来查找,它会启动一个香草吊索系统有很多你不需要的软件包,但是你可以尝试将它减少到最小,但仍然允许ResourceProvider机制工作。

答案 1 :(得分:1)

您也可以使用Apache Commons VFS2,例如JCR连接器,或者您可以使用webdav或JDBC表。我在共享JDBC表顶部的原子(git like)树之上的商业项目中使用它。