2011-09-06 113 views
1

所以从我读的内容来看,这应该是非常简单的执行..我已经遵循了与创建我的application.xml文件中的类似的设置。WAS 6.1 - 在一个EAR中部署多个WAR

<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罐(或他们是在两个地方装)这个错误引起的。虽然我认为这不可能是一个问题,因为这些罐子在不同的战争中。

+0

这应该工作,因为两个WAR都有它自己的类加载器。您是否在WebSphere的共享文件夹中放置了任何东西? – home

+0

那是哪个文件夹?从我最近的一系列错误中,看起来他们的WEB-INF/lib&WEB-INF/classes文件夹正在彼此看到?例如,我刚才发现一个错误,说在另一个WAR中已经定义了一个名为'default'的struts包。另外在我得到错误之前,其他战争已经加载了几个与struts相关的jar文件。 –

+0

是不是已经用struts库了? (WAS7,没有与6年以上的工作,所以不知道)。也许你应该抛弃你的WARS中包含的那些,看看是否有效。 – Renan

回答

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)

0

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

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

HTH

Manglu

相关问题