0

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

然后是下一个问题:首选哪个选项?

我目前正在使用这种配置: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>
4

1 回答 1

2

该页面上列出的三种部署模型并未完全反映可用的细微差别范围。

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

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

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

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

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

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

于 2013-07-27T20:52:50.110 回答