우리 응용 프로그램에서 우리는 WSDL 서비스 호출을합니다 ("SomeService"라고합시다). JBoss 6.x 및 JDK1.8을 사용합니다 (테스트 환경). 우리의 응용 프로그램은 또한 다른 서비스에 대한 CXF와의 종속성이 있습니다. "SomeService"는 "CXF"대신 표준 JAXWS를 통해 호출되어야합니다. 기본적으로 c all은 CXF를 통해 라우팅되므로 정책 문제가 발생합니다. 따라서 아래에 나와있는 해결책을 따랐습니다.JBoss 6.x에서 java.lang.ClassNotFoundException을 throw하는 중 : com.sun.xml.internal.ws.spi.ProviderImpl
JAX-WS = When Apache CXF is installed it "steals" default JDK JAX-WS implementation, how to solve?.
if (previousDelegate.getClass().getName().contains("cxf")) {
ServiceDelegate serviceDelegate = ((Provider) Class.forName("com.sun.xml.internal.ws.spi.ProviderImpl").newInstance())
.createServiceDelegate(SomeService.WSDL_LOCATION, SomeService.SERVICE_NAME, service.getClass());
delegateField.set(service, serviceDelegate);
}
이 변경 내 로컬 환경 (내가 + JDK 1.8 톰캣 8을 사용하고 있습니다)에 나를 위해 잘 작동 :
나는 내 코드에서 다음과 같이 변경했다. 테스트 플랫폼 (JBoss 6.x + JDK 1.8)에 코드를 배포했습니다. 기능을 테스트하는 동안 다음 오류가 표시됩니다.java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl from [Module "deployment.MyAPP.war:main" from Service Module Loader]
이 오류의 원인을 모릅니다. 누구도 그것에 대해 단서가 있습니까? JBoss 서버를 추가로 변경해야합니까? "com.sun.xml.internal.ws.spi.ProviderImpl"은 표준 클래스이며 JDK1.8에서 사용할 수 있으므로 JBoss 서버가 JDK1을 가리키고 있기 때문에 위의 오류가 발생하는 이유가 없습니다. 8.
귀하의 도움에 감사드립니다.