日期:2014-05-19  浏览次数:20770 次

J2EE模块加载顺序问题

J2EE规范没有对EAR文件内的J2EE模块应该如何部署做出任何规定。特别地,J2EE规范没有明确规定部署模块的次序。如果一个模块中的某个组件要用到另一个待部署模块的组件,它可能会带来问题。
因此,必须注意大多数应用服务器以如下步骤部署EAR文件:
  EAR文件内的所有资源适配器作为基本连接器部署。如果存在多个资源适配器,则它们的部署次序就是它们在application.xml部署描述器中列出的次序。
部署所有EJB模块。由于EJB可能在初始化期间用到某些资源适配器,所以EJB的部署在资源适配器之后。如果存在多个EJB模块,它们的部署次序将是它们在application.xml中列出的次序。
部署所有Web应用模块。由于Web应用初始化期间可能用到资源适配器和EJB,所有Web应用在这两者之后部署。如果存在多个Web应用模块,它们部署次序就是它们在application.xml中列出的次序。?
例如:
<!DOCTYPE application (View Source for full doctype...)>?
<application>
<display-name>CMP2.0 Example</display-name>?
<description>TongWeb4.0 Example : CMP2.0 EJB Example</description>?
<module>
<ejb>ejbql801.jar</ejb>?
</module>
<module>
<web>
<web-uri>ejbql801.war</web-uri>?
<context-root>/ejbql801</context-root>?
</web>
</module>
</application>

war模块应放在最后加载。