2009-12-21 2 views
1

Я создаю веб-приложение, его сервлет, который в основном выступает в качестве интерфейса для веб-службы, im использует CXF для клиента веб-службы, приложение работает на сервере WebLogic 9.10, все работает нормально до тех пор, пока владелец проекта не решит добавить ssl supprt, никакой большой проблемы, так как im, использующий cxf whitout spring, мне удалось настроить параметры TLS в http-канале клиента службы, также настроил хранилище ключей с ключом сервера , сертификат ca root и клиентский сертификат, протестированные под экземпляром разработки tomcat и работающие нормально.CXF + SSL + WebLogic 9.10

Проблемы начались, когда перераспределены приложение к WebLogic Server снова и начал получать странные ошибки, первые один был:

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 

тогда я понял, чем WebLogic нагружал свою собственную реализацию JAX-WS, нормально не probelm , просто добавил 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 

это один получил меня, я думал, что что-то неправильно йоту путь класса , поэтому я начал удалять банки из приложения и стилировать л получил некоторые более сцепления ошибок, последний я получил это:

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/Библиотека /» каталог моего приложения выглядит сейчас:

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 и следуйте инструкциям в WebLogic от Application Server Specific Configuration Guide документации CXF. Точнее, обеспечивают weblogic-application.xml, как описано во втором варианте Pack war in an ear, deploy the ear with 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

Я не уверен, что помню, как я это решил. Я думаю, что проблема исчезла после удаления импорта stax-api в моем файле pom.xml. Точнее, в моем случае я должен был исключить его из 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> 
Смежные вопросы