Jackrabbit存储库的部署模型



我正在学习如何使用内容存储库,我正在使用Jackrabbit。我有一个Spring3.x应用程序,我已经成功地与内容存储库连接。我读过关于部署模型的文章(http://jackrabbit.apache.org/deployment-models.html)我想知道我使用什么类型的部署模型?我已经在JBoss7服务器中安装了Jackrabbit作为一个模块,但这基本上与将Jackrabbitlib与应用程序捆绑在一起相同,所以我想我使用的是应用程序捆绑模型?

然后是下一个问题:哪种选择更可取?

我当前正在使用此配置:http://wiki.apache.org/jackrabbit/ExamplesPage

<bean id="repository" class="org.apache.jackrabbit.core.RepositoryImpl">
    <constructor-arg index="0" ref="config" />
</bean>
<bean id="config" class="org.apache.jackrabbit.core.config.RepositoryConfig" factory-method="create">
    <constructor-arg index="0" value="./repository.xml"/>
    <constructor-arg index="1" value="." />
</bean>

该页面上列出的三个部署模型并不能完全反映可用的细微差别。

例如,从表面上看,应用程序捆绑包和共享J2EE资源模型之间的区别似乎是,在前者中,每个应用程序有一个存储库实例,在后者中,每个服务器有一个实例。如果你在应用服务器上只运行一个应用程序,就像我希望大多数人一样,那么区别似乎没有意义。

然而,还有另一个可能的区别:在应用程序捆绑包中,我希望应用程序使用类似new TransientRepository().login()的东西直接创建存储库,而在共享J2EE资源中,它必须由应用程序服务器作为资源适配器来创建和管理。

也就是说,我认为可以在一些容器中创建一个类似于每个应用程序资源适配器的东西,然后将代码打包到应用程序服务器中(作为JBoss AS7中的一个模块),然后在代码中创建存储库。这有点模糊了界限。就像我说的,细微差别。如果你在代码中创建存储库,我想我会认为你的方法是一个应用程序捆绑包,即使它使用了一个模块。

不管怎么说,我认为最有趣的区别在于存储库的创建和管理方式,以及由此产生的后果。在代码中这样做可能更容易,因为它不需要处理XML。但在应用服务器配置中这样做意味着应用服务器将自动处理池和事务等等。这听起来对我很有吸引力。

将访问控制(如果你需要的话)与用户登录集成也可能会产生后果——如果应用服务器同时管理这两者,那么集成它们可能会更容易。或者更难,你永远不会知道。

由于惊人的同步性,今天下午我重新启动了我的一个旧项目,试图让Jackrabbit作为一种资源——JCRDemo——在JBoss AS7中很好地工作,这可能会引起人们的兴趣。它包含了所有的管道,但没有做任何有趣的事情——它只有一个servlet,用于呈现存储库根节点的toString

最新更新