JSF2与EJB3和JPA - 如何最好地打包

时间:2013-05-21 00:16:56

标签: jsf-2 deployment jpa-2.0 ejb-3.0 packaging

我试图通过创建一些使用JSF2作为前端,无状态EJB3会话bean来处理事务和JPA来持久化实体的功能来教自己一些关于EJB3和JPA的内容。

理想情况下,我希望EJB应用程序位于远程服务器上,并且JSF2 war文件位于单独的服务器上并进行远程通信 - 从而模拟分布式项目。但我希望他们共享相同的JPA实体类(因为它似乎有点无意义地将它们转换为其他DTO对象仅用于前端使用 - 所以如果JPA项目属于自己的项目,那对我来说是有意义的

我无法理解的是如何最好地打包和部署各种组件。 部署是否最好: 1)在服务器1上:一个EAR文件,在一台服务器上包含JPA jar文件和EJB模块。但是,如果我这样做,应该将persistence.xml文件放在哪里 - 在jpa jar文件中或在ejb模块中?

和 2)在服务器2上:一个带有JSF应用程序的war文件和这个war的WEB-INF lib中的JPA jar文件。在这种情况下,我假设EJB接口也需要外化到一个jar文件中并包含在web-inf / lib中?

或者我是以完全错误的方式思考的?

对于实现我想要做的事情的最佳实践应该有什么想法?如果我做错了,请提前道歉......这是一次学习经历!

1 个答案:

答案 0 :(得分:0)

第一个JPA对象由持久化上下文管理,因此我不建议将该对象传递给Web层。您可以使用JAXB对象发送到Web层。应该读取JPA实体对象并将其设置为JAXB对象字段并返回相同的对象。

它比pojo映射框架更快更容易。