用于部署用Java编写的分层业务应用程序的模式

用于部署用Java编写的分层业务应用程序的模式,java,deployment,web-applications,maven-2,jakarta-ee,Java,Deployment,Web Applications,Maven 2,Jakarta Ee,我正在开发一个用Java编写的分层业务应用程序,它应该打包为EAR文件并部署到JBoss应用服务器。有一个web应用层、一个服务层、一个域层,但没有持久层。至少在纸上是这样 部署不同层的最佳实践是什么?在我们的团队中,有一场小小的宗教战争正在进行: 将每个层打包到自己的JAR文件中(例如,在自己的Maven模块中),并将每个模块添加到EAR文件中,或者 将所有内容捆绑在一个JAR文件中,每个层映射到一个包命名约定 还有其他我错过的可能性吗?这方面的最佳做法是什么?有什么在线或离线的资源可以供

我正在开发一个用Java编写的分层业务应用程序,它应该打包为EAR文件并部署到JBoss应用服务器。有一个web应用层、一个服务层、一个域层,但没有持久层。至少在纸上是这样

部署不同层的最佳实践是什么?在我们的团队中,有一场小小的宗教战争正在进行:

  • 将每个层打包到自己的JAR文件中(例如,在自己的Maven模块中),并将每个模块添加到EAR文件中,或者
  • 将所有内容捆绑在一个JAR文件中,每个层映射到一个包命名约定

还有其他我错过的可能性吗?这方面的最佳做法是什么?有什么在线或离线的资源可以供我参考吗?

在我的公司,我们将每一层打包到自己的JAR中。然后我们把它包括在战争中


如果您没有任何需要管理的EJB,那么使用EAR进行部署比使用WAR没有真正的优势。

无论您选择哪种方法,请确保您确实从中获得了价值。换句话说,不要服务于体系结构原则(package/jar),让体系结构原则为您服务

您需要平衡关注点的分离与效率。你的项目越多,事情就变得越麻烦,但是如果你有一个项目,那也会很麻烦


查看您的需求、应用程序的上下文和大小,并决定哪种方法最适合您。

+1:我个人喜欢将层拆分为不同的罐子。我认为它有助于维护层之间的正确依赖关系,这只能帮助维护系统结构。