2016-01-07 71 views
1

目前,我们正在使用JBoss AS 5,用单耳文件与部署结构如下如何构建JBoss AS 7中的ear文件以避免类转换异常?

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

所有EJB中共同的Web应用程序保存在lib和第三方jar文件都保存在耳朵根路径。这工作正常。

现在,我们正在将其迁移到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 

在第二部署结构,我们已在模块文件夹中定义的第三方罐子和在stanalone.xml加入全局依赖。

虽然我们正在关注JBoss AS 7迁移文档和一些变通方法,但我们在部署过程中遇到了ClassCastExceptions。

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

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

+0

检查[JBoss Windup迁移工具](https://github.com/windup/windup/wiki)。 –

+0

你能解决这个@Bhimaraju? – Sampada

回答

0

我不知道这是否是最好的方法,但我已经使用它的方式是让ejb罐与战争在同一水平。基本上你是不使用的lib第二结构 -

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

在JBoss部署-structure.xml文件,那么你也可以把你的EJB的以同样的方式为战争,并为其提供dependencies-

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