该页面上列出的三种部署模型并未完全反映可用的细微差别。
例如,从表面上看,应用程序包和共享J2EE资源模型之间的区别似乎是前者,每个应用程序都有一个存储库实例,后者是每个应用服务器的一个实例。如果你只是在你的应用服务器上运行一个应用程序,我希望大多数人都是,那么差异似乎没有实际意义。
然而,还有另一个可能的区别:在应用程序包中,我希望应用程序可以直接创建存储库,例如 new TransientRepository().login() 而在共享J2EE资源中,它必须由应用服务器作为资源适配器创建和管理。
new TransientRepository().login()
那就是说,我想你 能够 在某些容器中创建每个应用程序资源适配器,您可以将代码打包到应用程序服务器(作为JBoss AS7中的模块),然后在代码中创建存储库。这有点模糊了界限。就像我说的,细微差别。如果您在代码中创建存储库,我想我会将您的方法视为应用程序包,即使它使用模块。
无论如何,这种漫无边际的情况是,我认为最有趣的区别在于存储库的创建和管理方式以及后果。在代码中执行此操作可能更容易实现,因为它不涉及使用XML。但是在应用服务器配置中执行此操作意味着应用服务器将自动处理池和事务等等。这听起来对我很有吸引力。
将访问控制(如果需要)与用户登录集成可能会产生影响 - 如果应用服务器同时管理这两者,则可能更容易集成它们。或者更难,你永远不会知道。
通过惊人的同步性,今天下午我把我的一个旧项目拂去,试图让Jackrabbit在JBoss AS7中很好地工作 - JCRDemo - 这可能是有趣的。它包含所有的管道,但没有做任何有趣的事情 - 它只有一个servlet,呈现 toString 存储库的根节点!
toString