如何在JBoss AS 7中构建ear文件以避免类转换异常?

时间:2016-01-07 12:49:27

标签: jboss7.x ear

目前我们正在使用JBoss AS 5并使用具有以下部署结构的单耳文件

company.ear
      |_ webapp1.war
      |_ webapp2.war
      |_ lib
      |    |_ ejb1.jar
      |    |_ ejb2.jar
      |_ META-INF
      |    |_application.xml
      |_ thirdparty1.jar
      |_ thirdparty2.jar

Web应用程序常用的所有ejb都保存在lib中,第三方jar保存在ear根路径中。这很好。

现在,我们正在将其迁移到JBoss 7.1.1。我们尝试了以下部署结构。

1. company.ear
      |_ webapp1.war
      |_ webapp2.war
      |_ lib
      |    |_ thirdparty1.jar
      |    |_ thirdparty2.jar
      |_ META-INF
      |    |_application.xml
      |    |_jboss-deployment-structure.xml
      |_ ejb1.jar
      |_ ejb2.jar

2. company.ear
      |_ webapp1.war
      |_ webapp2.war
      |_ lib
      |    |_ ejb1.jar
      |    |_ ejb2.jar
      |_ META-INF
          |_application.xml
          |_jboss-deployment-structure.xml

在第二个部署结构中,我们在modules文件夹中定义了thirdparty jar,并在stanalone.xml中添加了全局依赖。

虽然我们正在关注JBoss AS 7迁移文档和一些解决方法,但我们在部署期间获得了ClassCastExceptions。

如何避免在部署文件中获取这些异常?

或者我们如何通过单个类加载器强制JBoss SA加载所有EJB jar。

1 个答案:

答案 0 :(得分:0)

我不知道这是否是最好的方式,但我使用它的方式是让ejb罐子与战争处于同一水平。基本上你没有lib使用的第二个结构 -

company.ear
  |_ webapp1.war
  |_ webapp2.war
  |_ ejb1.jar
  |_ ejb2.jar
  |_ META-INF
      |_application.xml
      |_jboss-deployment-structure.xml

在jboss-deployment-structure.xml文件中,您可以像对待战争一样处理您的ejb并提供依赖关系 -

<sub-deployment name="ejb1.jar">        
    <dependencies>
        <module name="" />          
    </dependencies>
</sub-deployment>
<sub-deployment name="ejb2.jar">        
    <dependencies>
        <module name="" />          
    </dependencies>
</sub-deployment>