我正在为使用 Java EE 5 开发的大型软件系统设计构建系统和目录结构。构建系统将使用 ant 实现。
我们有多种不同的服务,它们按主题分组。每个服务都提供 Web 服务或 EJB。每个服务都运行在一个专用的应用服务器集群上。因此,我们有多个集群,其中一些集群可以按主题进行逻辑分组。
我确实阅读了通用定义和示例,但我仍然对 Java EE 术语感到困惑:
- 什么是 Java EE 应用程序?因此,EAR 文件的内容是什么?
- 什么是 Java EE 项目?(Netbeans 以及企业应用程序的 Java 蓝图指南项目约定中都使用了该术语)
我是否必须将所有 EJB 和 WAR-module-package-files 放在一个 EAR 中,以便这个 EAR 包含我们的完整系统?
或者我是否将每组服务放入一个 EAR,尽管这些服务只是在逻辑上分组而不是在技术上分组?
或者我是否为每个服务组装了一个单独的 EAR,即通常只包含一个 EJB jar 文件,有时还包含 EJB 和一个 WAR 文件?
或者我是否摒弃了应用程序的概念,只构建 EJB 和 WAR 文件,以便每个应用程序服务器集群只有一个部署文件?
我想,我的主要问题是:打包 EAR 文件有什么好处?
正如我目前所看到的,只需要 EAR-EJB 和 WAR 文件以及 ant-build-system 中嵌套子项目的概念和我们源代码的目录结构?
编辑:非常感谢您的回答!在我看来,打包到耳朵中的应用程序是一个相当原子的子系统。所以我想,我将有一个嵌套的子项目结构(只有逻辑,只对构建系统和源目录结构可见)和相当多的 EAR,每个 EAR 大多只包含一个 ejb-jar和/或war模块并实现单个服务(部署在单个应用程序服务器集群上)。