0

您好我正在尝试使axis2在Websphere 7上工作,我在apache轴站点中进行了建议的配置(更改axis2.xml“EnableChildFirstClassLoading”参数并将类加载器从“PARENT_FIST”更改为“PARENT_LAST”用于包含的webmodule轴2)

然而,在同一个 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 模块。

提前致谢,

4

1 回答 1

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 中。

于 2012-05-02T22:15:18.430 回答