1

私はWebアプリケーションを開発しています。そのサーブレットは基本的にWebサービスのフロントエンドとして機能し、WebサービスクライアントにCXFを使用しています。アプリケーションは、WebLogic 9.10サーバーで実行されており、プロジェクトの所有者まではすべて問題なく動作していました。 ssl supprtを追加することにしましたが、大きな問題はありません。春にcxfを使用しているので、サービスクライアントのhttpコンジットでTLSパラメータを構成し、サーバーキー、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の独自の実装をロードしていることに気付きましたが、probelmはありません。「prefer-web-inf-classes」をtrueに設定してweblogic.xmlを追加し、再デプロイしたところ、次の例外が発生しました。

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

何が間違っているのか分かりますか?前もって感謝します

4

2 に答える 2

5

内容をロールバックし、CXFのドキュメントの「アプリケーションサーバー固有の構成ガイド」prefer-web-inf-classesのWebLogic固有の手順に従います。より正確には、2番目のオプションで説明されているようにearをパックし、次のコンテンツを含むweblogic-application.xmlを使用してearをデプロイします。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>

必要に応じて、この投稿の追加の手順に従ってください。

于 2009-12-21T07:41:32.050 に答える
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>
于 2013-08-29T10:58:42.897 に答える