2009-12-21 11 views
1

나는 기본적으로 웹 서비스의 프런트 엔드 역할을하는 서블릿, 웹 서비스 클라이언트 용 CXF를 사용하는 서블릿, WebLogic 9.10 서버에서 실행되는 애플리케이션, 프로젝트 소유자가 SSL 커밋을 추가하기로 결정했을 때까지 모든 일은 괜찮 았습니다. 큰 문제는 없었습니다. cxf whitout spring을 사용했기 때문에 서비스 클라이언트의 http 도관에서 TLS 매개 변수를 구성하고 서버 키를 구성하는 키 저장소를 구성했습니다. , ca 루트 인증서 및 클라이언트 인증서, 개발 tomcat 인스턴스에서 테스트 및 잘 작동합니다. 다시 웹 로직 서버 응용 프로그램을 다시 배포하고 이상한 오류를 받기 시작하면CXF + SSL + WebLogic 9.10

문제가 시작, 첫 번째는 없었다 : 웹 로직는 JAX-WS의 자체 구현을로드하는 것보다

java.lang.ClassCastException: com.sun.xml.ws.client.sei.SEIStub cannot be cast to org.apache.cxf.frontend.ClientProxy 
at org.apache.cxf.frontend.ClientProxy.getClient 

다음 내가 실현, 확인을 더 probelm은 다만, true로 설정 weblogic.xml의 오순절 "선호-WEB-INF-클래스"를 추가 재배치하고 지금은이 예외를 가지고 : 저를 얻었다 하나, 내가 뭔가 클래스 경로 잘못된 오순절 알았는데 그건

java.lang.LinkageError: loader constraint violation: when resolving method "javax.xml.ws.Service.<init>(Ljava/net/URL;Ljavax/xml/namespace/QName;)V" the class loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) of the current class, com/adinfi/imgsvc/cm/service/CMBGenericWebServiceService, and the class loader (instance of <bootloader>) for resolved class, javax/xml/ws/Service, have different Class objects for the type javax/xml/namespace/QName used in the signature 

, 그래서 나는 응용 프로그램과 stil에서 항아리를 제거하기 시작했다. 난 좀 더 연결 오류를 가지고, 내가 가진 마지막 하나는 이것이다 :

java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for a different type with name "org/w3c/dom/UserDataHandler" 

을 그리고 이것은이 "WEB-INF가/lib 디렉토리 /"내 응용 프로그램의 디렉토리가 지금과 같은 모습입니다 :

classes12.jar 

    classes12.zip 

    common.jar 

    common.resources.jar 

    commons-beanutils-1.8.0.jar 

    commons-discovery.jar 

    commons-logging-1.1.1.jar 

    commons-logging-api.jar 

    commons-logging-api-1.1.1.jar 

    cxf-2.2.5.jar 

    log4j-1.2.8.jar 

    ras.jar 

    runtimefw.jar 

    wsdl4j-1.6.2.jar 

    wss4j-1.5.8.jar 

    xalan-2.7.1.jar 

    xml-resolver-1.2.jar 

    XmlSchema-1.4.5.jar 

    xmlsec-1.4.3.jar 

하나를 무슨 일이야? 미리 감사드립니다.

답변

5

prefer-web-inf-classes을 롤백하고 CXF의 설명서 Application Server Specific Configuration Guide에서 WebLogic 특정 지침을 따르십시오. 더 정확하게, 같은 다음과 같은 내용으로 두 번째 옵션 Pack war in an ear, deploy the ear with weblogic-application.xml에서 설명한 weblogic-application.xml 제공 : 필요한 경우

<?xml version="1.0" encoding="UTF-8"?> 
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90"> 
    <application-param> 
     <param-name>webapp.encoding.default</param-name> 
     <param-value>UTF-8</param-value> 
    </application-param> 
    <prefer-application-packages> 
     <package-name>javax.jws.*</package-name> 
    </prefer-application-packages> 
</weblogic-application> 

this post의 추가 단계를 따릅니다.

+0

와우 어떻게 든 그 문서를 놓칠 수 있었다 .... 지금은 내 작품에 떨어져, 즉각 답변을 주셔서 감사합니다 =) – Harima555

0

어떻게 해결했는지 모르겠습니다. 내 pom.xml 파일에 stax-api의 가져 오기를 제거한 후에 문제가 사라 졌다고 생각합니다. 더 정확하게는, 제 경우에는 poi-ooxml에서 제외해야했습니다.

<dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
     <version>3.9</version> 
     <exclusions> 
      <exclusion> 
       <groupId>stax</groupId> 
       <artifactId>stax-api</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency>