나는 다음과 같은 구성으로 프로젝트가 있습니다CXF는 WebSphere 6.1 클래스 로딩 문제에
- WebSphere Application Server에
$WAS_ROOT/java/jre/lib/ext
디렉토리에서 6.1.0.19 - wsdl4j-1.6.2.jar (로를 WAS 6.1에 포함 된 wsdl4j-1.6.1 덮어 쓰기).
$WAS_ROOT/lib/ext
디렉토리에서 - CXF-2.4.0.jar (및 기타 종속성).
- 웹 모듈 'Y'을 갖는 EAR 'X'.
- 웹 모듈 'Y'에는 JAR 모듈 'Z' (
WEB-INF/lib
디렉토리에 있음)이 있습니다. - 'Z'에는 CXF의 wsdl2java를 사용하여 생성 된 SOAP 웹 서비스를 구현하는 클래스 세트가 있습니다.
- 'Y'는 'Z'에서 SOAP 웹 서비스 클라이언트를 호출하는 비즈니스 클래스 (
WEB-INF/classes
디렉토리에 있음)를가집니다.
이 구성은 내 개발 환경 (WebSphere Application Server 6.1 런타임이있는 Rational Application Developer)에서 잘 작동합니다. CXF의로드하려고
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
것 같다 :하지만 품질 보증 환경에서, 나는 (스택 추적에 bolds에주의하십시오), 다음과 같은 예외가 있었다 서버 런타임에 존재하는 클래스.
나는 누군가가이 문제를 도와 바랍니다. 나는 매우 고맙게 여길 것이다. WAS_HOME/lib 디렉토리/내선에서
은 어디 ClientLifecycleManager 클래스는 어디에 있습니까? cxf-2.4.0.jar에 있습니까?WAS_HOME/lib/ext /에 jar를 두는 것은 해당 디렉토리의 jar가 클래스 경로의 끝을 향하고 WAS 확장 클래스 로더가 "상위 우선"클래스 로딩을 사용하기 때문에 실제로 WAS 클래스를 대체하지 않습니다. –