WAS 6.1 - 在一个EAR中部署多个WAR

时间:2011-09-06 15:16:42

标签: java-ee struts2 jvm websphere websphere-6.1

因此,根据我的阅读,这应该非常简单。我在创建application.xml文件时遵循了类似的设置。

<application>
   <display-name>test</display-name>

   <module>
      <web>
         <web-uri>foo.war</web-uri>
         <context-root>foo</context-root>
      </web>
   </module>

   <module>
      <web>
         <web-uri>bar.war</web-uri>
         <context-root>bar</context-root>
      </web>
   </module>

</application>

我已经在这个JVM中单独测试了这两个应用程序并且它们运行良好...但是当放在一起我得到struts 2错误(两个应用程序都是使用struts 2框架创建的),而我是不确定缺少什么。错误如下

[Servlet Error]-[Filter [struts2]: could not be initialized]: Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean - wsjar:file:<my filepath>/WEB-INF/lib/struts2-core-2.0.14.jar!/struts-default.xml:30:72 

有什么想法吗?


*编辑 所以我一直在读这个错误可能是因为你在WEB-INF / lib目录中有冲突的struts2 jar(或者它们被加载到两个地方)。虽然我认为这不是一个问题,因为这些罐子在不同的WAR中。

2 个答案:

答案 0 :(得分:2)

最简单的方法可能是更改类加载器策略:来自控制台applications->enterprise applications->your app->WAR class loader policy->Class loader for each WAR file in application。但是试着确保在WEB-INF / lib目录中只有一组给定的罐子。您也可以使用共享库。但如果问题是由共享库引起的,则可以更改类加载器顺序applications->enterprise applications->your app->class loader order->Classes loaded with local class loader first (parent last)

答案 1 :(得分:0)

如果您怀疑是冲突,请启用详细的类加载以查看正在加载的内容。确保您有多个类加载器(这是默认设置)。

查看详细的类加载应告诉您WAS运行时从何处加载所需的类。

HTH

Manglu