Jakarta ee 在JavaEE企业应用程序中放置业务逻辑的位置

Jakarta ee 在JavaEE企业应用程序中放置业务逻辑的位置,jakarta-ee,ejb,ejb-3.0,java-ee-6,business-logic,Jakarta Ee,Ejb,Ejb 3.0,Java Ee 6,Business Logic,创建企业JavaEE应用程序时,必须将部分业务逻辑(如消息传递(MDB))放入EJB模块中。但是,有些EJB可以放在EJB模块或web模块内部。我知道分离模块允许在不同的机器上部署web层和业务层。因此,我将把我的@Stateful购物车EJB放在web模块中。然而,我想不出一个标准标准可以应用于每一个业务逻辑,决定将包围它们的EJB放在哪里。有没有关于这方面的指南、标准或推荐做法?这是我到目前为止发现的 EJB模块应该包含大型企业应用程序的业务逻辑核心。另一方面,Web模块包含一个成熟的Web

创建企业JavaEE应用程序时,必须将部分业务逻辑(如消息传递(MDB))放入EJB模块中。但是,有些EJB可以放在EJB模块或web模块内部。我知道分离模块允许在不同的机器上部署web层和业务层。因此,我将把我的
@Stateful
购物车EJB放在web模块中。然而,我想不出一个标准标准可以应用于每一个业务逻辑,决定将包围它们的EJB放在哪里。有没有关于这方面的指南、标准或推荐做法?

这是我到目前为止发现的

EJB模块应该包含大型企业应用程序的业务逻辑核心。另一方面,Web模块包含一个成熟的Web应用程序,该应用程序应该利用EJB模块提供的业务引擎。通常,这些模块分布在大型应用程序的不同服务器之间,除了web应用程序之外,还有一些客户端应用程序(例如Swing/JFX桌面应用程序)需要使用EJB模块中的核心业务逻辑提供的服务

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

  • 它将由多个web或桌面应用程序使用,或者
  • 扩展考虑可能会迫使核心业务逻辑由单独的服务器处理

  • 在其他情况下,您可以将其EJB放入web模块中,并将整个内容打包为WAR文件。

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


    如果需要在多个应用程序之间共享业务逻辑,那么可以将其作为单独的模块进行部署。但通常情况下,出于扩展的原因,这样的事情是不必要的,因为您也可以相应地对运行WAR的应用程序服务器进行尺寸标注。

    您能说出其中一些“业务逻辑”吗?处理通过消息传递接收到的外部应用程序的报告,同时将它们推送到web界面上(用于通过web界面进行实时监控)并将结果保存到数据库。-我在问题中提到的购物车示例,以及处理从基于web的界面收集详细信息的客户订单。-根据用户内容生成图形和图像。-根据用户提供的参数生成对某些NoSQL数据源的查询,运行查询并以有意义的方式处理结果。这些只是示例。事实上,但要意识到将EJB Bean从web模块中的包移动到自己的EJB模块并不重要。因此,如果应用程序足够大或需要单独部署业务层,您可以从这样简单的包开始,然后移动到模块您的发现的最后一部分,EJB可以放在WAR中,如果EJB模块存在,那么它将使用EAR right?WAR和EJBin-EAR?Regardsys进行部署。EAR(企业应用程序)由多个WAR(web模块)和多个JAR(EJB模块)组成。当您的企业应用程序设计为分布在多个服务器(多个模块)之间,但在特定情况下您希望将所有模块部署在单个服务器上时,这是合适的。但是,如果您不太可能在不同的服务器之间分布模块,您可以将所有EJB放在WAR文件中。