我有以下配置的項目:CXF在WebSphere 6.1類加載問題
- 的WebSphere Application Server 6.1.0.19
- WSDL4J-1.6.2.jar在
$WAS_ROOT/java/jre/lib/ext
目錄,(以覆蓋WAS 6.1中包含的wsdl4j-1.6.1)。 - cxf-2.4.0.jar(和其他依賴關係)在
$WAS_ROOT/lib/ext
目錄。 - 安EAR'X'與Web模塊'Y'。
- Web模塊'Y'有一個JAR模塊'Z'(位於
WEB-INF/lib
目錄)。 - 'Z'有一組類實現使用CXF的wsdl2java生成的SOAP Web服務。
- 'Y'有一個業務類(位於
WEB-INF/classes
目錄),它在'Z'處調用SOAP Web服務客戶機。
該配置在我的開發環境(Rational Application Developer和WebSphere AS 6.1運行時)下運行良好。但在QA環境,我有以下異常,(請加粗關注的堆棧跟蹤):
org.apache.cxf.bus.extension.ExtensionException
at org.apache.cxf.bus.extension.Extension.loadInterface(Extension.java:134)
at org.apache.cxf.bus.extension.ExtensionManagerImpl.loadAndRegister(ExtensionManagerImpl.java:160)
at org.apache.cxf.bus.extension.ExtensionManagerImpl.getBeansOfType(ExtensionManagerImpl.java:256)
at org.apache.cxf.bus.CXFBusImpl.getExtension(CXFBusImpl.java:99)
at org.apache.cxf.endpoint.ClientImpl.notifyLifecycleManager(ClientImpl.java:186)
at org.apache.cxf.endpoint.ClientImpl.(ClientImpl.java:117)
at org.apache.cxf.frontend.ClientFactoryBean.createClient(ClientFactoryBean.java:104)
at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:92)
at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:152)
at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142)
at org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:464)
at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:331)
at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:318)
at javax.xml.ws.Service.getPort(Service.java:46)
at web.service.client.implementation.at.z.module.method(Unknown Source)
at business.class.at.y.web.module.method(AvisoCobroDAO.java:86)
... 32 more
Caused by: java.lang.ClassNotFoundException: org.apache.cxf.endpoint.ClientLifeCycleManager
at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:472)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:373)
at java.lang.ClassLoader.loadClass(ClassLoader.java:561)
at org.apache.cxf.bus.extension.Extension.loadInterface(Extension.java:132)
... 51 more
好像CompoundClassLoader
(這在應用程序級作品)試圖加載CXF的類存在於服務器運行時級別。
我希望有人能幫我解決這個問題。我會非常感激。
哪裏ClientLifecycleManager類在什麼位置?它在cxf-2.4.0.jar中嗎?請注意,將JAR放入WAS_HOME/lib/ext /中實際上並不會覆蓋WAS類,因爲該目錄中的jar包是類路徑的末尾,而WAS擴展類加載器使用「父級第一」類加載。 – 2011-05-12 00:27:01