将业务逻辑放在Java EE企业应用程序中的位置

时间:2012-10-26 21:05:09

标签: java-ee ejb ejb-3.0 java-ee-6 business-logic

在创建企业Java EE应用程序时,必须将部分业务逻辑(如消息传递(MDB))放在EJB模块中。但是,有些EJB可以放在EJB模块或Web模块中。我知道分离模块允许Web层和业务层部署在不同的机器中。因此,我会将我的@Stateful购物车EJB放在Web模块中。但是,我无法想到可以应用于每个业务逻辑的标准标准,决定将EJB封装在哪里。是否有针对此的指南,标准或推荐做法?

2 个答案:

答案 0 :(得分:1)

这是我到目前为止所发现的。

EJB模块应该包含大型企业应用程序的业务逻辑核心。另一方面,Web模块包含一个完整的Web应用程序,该应用程序应该利用EJB模块提供的业务引擎。通常这些模块分布在不同的服务器中以用于更大的应用程序,并且除了Web应用程序之外还有客户端应用程序(例如Swing / JFX桌面应用程序),它们需要使用驻留在EJB模块中的核心业务逻辑提供的服务。 / p>

换句话说,如果出现以下情况,可以将业务逻辑放在单独的EJB模块中:

  1. 它可以由多个Web或桌面应用程序使用,或
  2. 扩展注意事项可能会强制核心业务逻辑由单独的服务器处理
  3. 在其他情况下,可以将他的EJB放在Web模块中,并将整个内容打包为WAR文件。

答案 1 :(得分:1)

正如您在上一句中所述,这正是我的建议:对JEE6应用程序使用WAR包装,因为在大多数情况下您不需要EAR。

如果需要在多个应用程序之间共享业务逻辑,则可以将其作为单独的模块进行部署。但通常这样的事情对于缩放原因来说并不是必需的,因为您也可以相应地为应用服务器维护运行WAR。