用MyEclipse创建第一个企业应用程序项目!
1. 企业应用项目模型MyEclipse提供了一个企业应用程序项目模型即EAR项目模型以及用于创建Java EE企业应用程序的管理工具。由图标标识的EAR项目是Web、应用程序客户端、连接器和EJB项目的逻辑容器它产生一个单一的服务器端部署单元称为Java EE Enterprise Archive (EAR)。在物理上EAR项目的文件夹结构中没有子项目而是EAR项目维护对其组件模块的引用。Java EE规范将企业应用程序的运行时结构定义为Java EE模块和模块所需的基本文件资源的集合。最常见的Java EE模块类型有Web模块——通常表示为Web存档(WAR)EJB模块——通常表示为EJB JAR存档EAR项目必须包含至少一个模块项目因此在EAR项目开发过程中只要包含一个模块项目就可以根据需要添加和删除模块项目。部署企业项目时引用的模块项目被打包到各自的存档表单中并作为企业存档的模块部署。通常Web模块提供Web用户界面服务和用户对一个或多个EJB模块提供的业务服务的访问Java EE规范将EAR定义为标准的Java EE部署单元。此外规范允许(但不要求)应用服务器供应商支持其他部署形式如独立WAR和EJB jar。MyEclipse项目模型与Java EE企业应用程序模型的相似之处如下MyEclipse Web Module项目——设计时相当于Java EE Web模块Web Module项目与基本的MyEclipse Web项目相同只是添加了内部元数据和可选的项目依赖项。MyEclipse EJB模块项目——设计时相当于Java EE EJB模块EJB模块项目与基本的MyEclipse EJB项目相同只是增加了内部元数据和可选的项目依赖项。MyEclipse企业项目——设计时相当于Java EE企业应用程序不包含任何Web或EJB项目代码而是维护与模块项目的关联。所有使用JavaEE 5.0以下版本的EAR项目都使用一个META-INF根文件夹和一个空的META-INF/application.xml部署描述符创建对于使用Java EE 5或更高版本的项目这个文件不是必需的您可以选择生成这个文件可以根据需要修改application.xml文件。注意对于需要application.xml文件的Java EE版本不要移动或重命名该文件或META-INF文件夹这样做会导致部署失败项目元数据文件以外的所有资源都被认为是部署的一部分。下图描述了MyEclipse web项目的Resource透视图这个视图显示了项目的部署信息可以使用项目的Deployment Assembly属性自定义项目部署。2. 项目组织、依赖项和类解析Java EE规范为企业应用程序定义了分层Java类解析策略这种自底向上的搜索策略如下图所示。当任何模块引用Java类时其本地类加载器首先在该模块的代码基中搜索该类如果在模块本地找不到类则模块向上一级的类加载器发出搜索请求这个过程一直持续到找到类或到达顶级Java引导类加载器为止(图中没有显示)。理解Java EE企业应用程序类加载器策略很重要类加载策略影响开发者如何选择在Web和EJB模块项目之间分发类例如如果有一个或多个业务数据对象在web模块的用户界面元素和EJB模块的服务之间传递通过在EJB模块中定位数据对象它们对web模块和EJB模块都是可见的。导致类加载问题的两个常见的项目组织错误是在web模块中放置数据对象类会导致运行时ClassNotFoundExceptions将共享类复制到web和EJB模块项目这种方法通常会导致难以诊断与序列化和类不兼容相关的错误这使得实践比第一点更加困难MyEclipse Java EE项目模拟这种分层类加载器策略为开发者提供构建时对MyEclipse企业项目及其组成Web和EJB模块项目的类加载器可见性的准确洞察。这是使用Eclipse项目依赖项完成的如下面的插图所示当web或EJB项目被添加到MyEclipse EAR项目时项目依赖项将相应设置。不要手动修改这些项目依赖项这样做可能会引入不必要的编译问题。注意​​​​​​​MyEclipse开发团队认为支持类加载器模拟来帮助开发人员识别难以解决的由类加载器可见性问题引起的运行时错误是一个至关重要的需求这就是为什么MyEclipse不支持在EAR项目中物理嵌入模块代码的原因之一。相反EAR项目以模块的形式维护与单个web和EJB项目的关联。