2017-12-04 13 views
0

나는 다른 연결 오류를 보았지만 아무도 항아리로 무엇을 할 수 있는지 말하지 않았습니다. Jboss에서 응용 프로그램을 배포하면 제대로 작동하지만 websphere에 응용 프로그램을 배포 할 때이 연결 오류가 발생합니다. 유사한 문제는 여기에서 찾을 수 있습니다 : LinkageError when calling webservice method하지만 해결하기 위해 어떻게해야 할 것이LinkageError : 로딩 컨트 롤링 위반

는 주로는 공유 클래스 JSP Web 서비스를 호출 내가 가지고 javax/xml/soap/SOAPFault

Caused by: java.lang.LinkageError: loading constraint violation: loader "com/ibm/oti/vm/[email protected]" previously initiated loading for a different type with name "javax/xml/soap/SOAPFault" defined by loader "com/ibm/ws/classloader/[email protected]" 
     at com.ibm.oti.vm.VM.findClassOrNull(Native Method) 
     at com.ibm.oti.vm.BootstrapClassLoader.loadClass(BootstrapClassLoader.java:63) 
     at javax.xml.ws.soap.SOAPFaultException.<init>(SOAPFaultException.java:78) 
     at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:160) 
     at com.sun.proxy.$Proxy118.collectionsInquiryV2(Unknown Source) 

com/ibm/oti/vm/BootstrapClassLoadercom/ibm/ws/classloader/CompoundClassLoader에서로드. axis.jar에서 본 유일한 jar 파일과 javax/xml/soap/SOAPFault 클래스가 포함되어 있습니다.

axis.jar에서 SOAPFault.class를 제거해야합니까? (시도해도 작동하지 않으며 다른 웹 서비스가 제거 된 경우 실패합니다)

답변

0

응용 프로그램에 SOAP API jar가 있습니까? "로드 제약 조건 위반"LinkageError는 일반적으로 두 개의 다른 클래스 로더를 통해 클래스에 대한 중복 된 가시성을 의미합니다. 스택을 기반으로 애플리케이션에서 SOAP API는 있지만 JAX-WS API는 없다는 점을 추측하고 있습니다. JAX-WS 클래스가 SOAP 클래스를 참조하면, 앱의 클래스가 로컬 클래스 로더에서 직접, 그리고 JAX-WS API를 통해 간접적으로 두 개의 다른 로더에서 SOAP API를 "볼"수 있음을 의미합니다.

가장 간단한 대답은 앱의 SOAP API jar (s)를 제거하는 것입니다. 특정 버전의 버전이 필요하다면 서버의 사본에만 의존 할 수 있습니다. 또는 응용 프로그램이 JAX-WS API jar를 응용 프로그램 패키지에 추가하여 응용 프로그램이 서버에서 가져 오기보다는 자체 API 사본을로드 할 수 있습니다.

+0

동일한 클래스를 가진 두 개의 Jar는 saaj.jar 및 axis.jar가 아니 었습니다. 둘 다 SOAPFault.class를 포함합니다. 문제는 내가 그들을 제거하면 다른 클래스에 대한 실패를 일으킬 수 있기 때문에 그 중 하나를 제거 할 수 없다는 것입니다. 오류를 수정하는 방법을 모르겠습니다. – logger

+0

제거하면 어떤 종류의 오류가 발생합니까? 매우 정통적인 배포 설정이 없거나 이상한 SOAP 버전을 사용하는 경우가 아니면 응용 프로그램에 필요한 SOAP API 클래스는 서버와 함께 제공된 사본을 통해 볼 수 있습니다. – Jarid

+0

ClassDefNotFound. 그들을 제거하면 다른 수업을 위해. – logger