CXF + SSL + WebLogic 9.10 - PullRequest
       45

CXF + SSL + WebLogic 9.10

1 голос
/ 21 декабря 2009

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

Проблемы начались при повторном развертывании приложения на сервере weblogic и появлении странных ошибок, во-первых:

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, хорошо, без проблем, просто добавил weblogic.xml с параметром «предпочесть-web-inf-классы» в значение true, повторно развернул, и теперь я получил это исключение:

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

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

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

Есть идеи, что я делаю не так? заранее спасибо

Ответы [ 2 ]

5 голосов
/ 21 декабря 2009

Откат prefer-web-inf-classes материала и следуйте инструкциям, специфичным для WebLogic из Руководства по настройке сервера приложений документации CXF. Точнее, предоставьте 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>

Выполните дополнительные шаги этого поста , если требуется.

0 голосов
/ 29 августа 2013

Я не уверен, что помню, как я решил это. Я думаю, что проблема исчезла после удаления импорта 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>
...