Websphere 7类加载委托

时间:2012-05-02 21:12:16

标签: dependencies websphere axis2 classloader

您好我正在尝试让axis2在Websphere 7上运行,我在apache轴站点中进行了sugested配置(更改了axis2.xml“EnableChildFirstClassLoading”参数并将类加载器从“PARENT_FIST”更改为“PARENT_LAST”包含axis2的webmodule

然而,在同一个EAR中,还有另一个带有JSP和struts的Web应用程序,在更改类加载器后停止工作(由于jar库版本问题),我的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模块。

提前致谢,

1 个答案:

答案 0 :(得分:0)

在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

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

相关问题