2012-05-02 57 views
0

您好我想讓axis2在Websphere 7上工作,我在apache axis站點上執行了sugested配置(更改axis2.xml「EnableChildFirstClassLoading」參數並將類加載器從「PARENT_FIST」更改爲「 PARENT_LAST「爲包含axis2的web模塊)Websphere 7 classloading delegation

但是在同一個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模塊。

由於提前,

回答

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模塊的委派模式。但是,如果更改此設置會產生影響,那麼您應用程序類加載器類路徑上可能具有實際應位於WAR模塊的WEB-INF/lib中的JAR。

+0

嗨,感謝您的回答,我想要做的是重寫與websphere捆綁在一起的axis實現,我在WEB-INF/lib上擁有所有必需的庫,而PARENT_LAST可以忽略服務器實現,但是更改該委派模式會使其他Web模塊失敗。 – Andres

+0

我無法解釋爲什麼更改一個WAR的委派模式會影響其他任何其他模式。我非常懷疑這是一種錯誤配置或某種錯誤包裝,但我猜不出是什麼。與IBM打開PMR可能是最容易的。 –

+0

感謝您的回覆,我檢查了應用程序類加載器,並將其配置爲Multiple而非Single,這可能是導致此行爲的原因,我想我將從Axis切換到JAX-RPC。 – Andres