Dependencies WebSphere7类加载委托

Dependencies WebSphere7类加载委托,dependencies,websphere,axis2,classloader,Dependencies,Websphere,Axis2,Classloader,您好,我正在尝试使axis2在Websphere 7上工作,我在apache axis站点中进行了sugested配置,更改了axis2.xml EnableChildFirstClassLoading参数,并将包含axis2的webmodule的classloader从PARENT_FIST更改为PARENT_LAST 但是,在同一个EAR中,还有另一个使用JSP和struts的web应用程序,在更改类加载器后,由于jar库版本问题而停止工作,my deployment.xml与此类似: &l

您好,我正在尝试使axis2在Websphere 7上工作,我在apache axis站点中进行了sugested配置,更改了axis2.xml EnableChildFirstClassLoading参数,并将包含axis2的webmodule的classloader从PARENT_FIST更改为PARENT_LAST

但是,在同一个EAR中,还有另一个使用JSP和struts的web应用程序,在更改类加载器后,由于jar库版本问题而停止工作,my deployment.xml与此类似:

<?xml version="1.0" encoding="UTF-8"?>
<appdeployment:Deployment xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:appdeployment="http://www.ibm.com/websphere/appserver/schemas/5.0/appdeployment.xmi" xmi:id="Deployment_1335990730424">
<deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1335990730424" startingWeight="10">
<modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1335990730424" startingWeight="10000" uri="StrutsWeb.war"/>
<modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1335990730425" startingWeight="10000" uri="Axis2Web.war" classloaderMode="PARENT_LAST"/>
<classloader xmi:id="Classloader_1335990730424" mode="PARENT_FIRST"/>
</deployedObject>
</appdeployment:Deployment>
一旦我从axis2 web模块中删除了PARENT_LAST,struts模块就会开始工作,有了PARENT_LAST,web服务就可以完美地工作,但struts web模块却不能。类加载器模式的更改似乎正在影响这两个Web模块


提前感谢,

在WebSphere Application Server中,与几乎所有的应用程序服务器一样,存在类装入器的层次结构:

Application server class loaders
|   Includes WAS_HOME/plugins, WAS_HOME/lib, etc.
|
+-- Application class loader
    |   Includes files in lib/ folder of the .ear
    |   Includes all JARs referenced from Class-Path in all .war
    |
    +-- StrutsWeb.war class loader
    |      Includes WEB-INF/classes and all JARs in WEB-INF/lib
    |
    +-- Axis2Web.war
           Includes WEB-INF/classes and all JARs in WEB-INF/lib

配置代码段中的元素嵌套在ApplicationDeployment中,因此它对应于应用程序类加载器。您可能不想修改此元素,您可能想修改单个WAR模块的委派模式。但是,如果更改此设置有效果,那么您的应用程序类加载器类路径上可能有JAR,该路径实际上应该位于WAR模块的WEB-INF/lib中。

您好,谢谢您的回答,我正在尝试覆盖与websphere捆绑的axis实现,我在WEB-INF/lib上有所有必需的库,PARENT_LAST可以忽略服务器实现,但是更改该委派模式会导致其他WEB模块失败。我无法解释为什么更改一个WAR的委派模式会影响其他任何WAR。我非常怀疑这是一种配置错误或某种包装错误,但我猜不出是什么。使用IBM打开PMR可能是最简单的。感谢您的回复,我检查了应用程序类加载器,并将其配置为多个而不是单个,这可能是导致此行为的原因,我想我将从Axis切换到JAX-RPC。我考虑过,但是配置代码段中的ApplicationDeployment没有显示warClassLoaderPolicy=SINGLE。无论如何,这就是为什么调整模式会影响两个模块的原因:使用单个类加载器策略意味着应用程序中的所有模块都共享一个类加载器。