2

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

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

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

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

还是我的想法完全错误?

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

4

1 回答 1

0

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

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

于 2013-10-06T18:48:32.253 回答