3

cxf-codegen-plugin を使用して Web サービス クライアントを生成しました。ローカルでこのコードを実行すると、Web サービスに接続されます。

アプリケーションを WebLogic サーバーにデプロイしようとすると、問題が発生します。クラスをインスタンス化しようとする*ServiceImplServiceと、次の例外がスローされます。

Caused by: javax.xml.bind.JAXBException: property "supressAccessorWarnings" is not supported

私が収集したものからすると、これは、WebLogic が古いバージョンの jaxb 関連クラスを提供していることが原因である可能性があります。私は(別々に)com.sun.xml.bind.*javax.xml.*、およびの要素javax.jws.*に絶望的に追加しようとしましたが、それでも同じ結果です。com.sun.*prefer-application-packagesweblogic-application.xml

これを修正する方法を知っている人、またはデバッグのための提案がある人はいますか?


関連する場合の追加情報

  • CXF バージョン: 2.6.1
  • WebLogic バージョン: 10.3.4.0

weblogic-application.xml に、私が試した変更は一切加えていません:

<?xml version="1.0" encoding="ISO-8859-1"?>
<wls:weblogic-application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-application.xsd">
    <wls:prefer-application-packages>
        <wls:package-name>org.hibernate.*</wls:package-name>
        <wls:package-name>antlr.*</wls:package-name>
        <wls:package-name>org.springframework.*</wls:package-name>
        <wls:package-name>net.bull.*</wls:package-name>   
        <wls:package-name>org.apache.commons.*</wls:package-name>
    </wls:prefer-application-packages>
</wls:weblogic-application>

スローされた例外:

Caused by: javax.xml.bind.JAXBException: property "supressAccessorWarnings" is not supported
    at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:118)
    at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:202)
    at sun.reflect.GeneratedMethodAccessor391.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:277)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
    at weblogic.wsee.jaxws.tubeline.ConfigReaderTubelineDeploymentListener.readConfigFile(ConfigReaderTubelineDeploymentListener.java:164)
    at weblogic.wsee.jaxws.tubeline.ConfigReaderTubelineDeploymentListener.init(ConfigReaderTubelineDeploymentListener.java:52)
    at weblogic.wsee.jaxws.spi.WLSServiceDelegate$WLSTubelineDeploymentListenerRepository.<init>(WLSServiceDelegate.java:323)
    at weblogic.wsee.jaxws.spi.WLSServiceDelegate.<init>(WLSServiceDelegate.java:94)
    at weblogic.wsee.jaxws.spi.WLSProvider$ServiceDelegate.<init>(WLSProvider.java:586)
    at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:120)
    at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:112)
    at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:83)
    at javax.xml.ws.Service.<init>(Service.java:56)
    at <my package name>.PutSituationServiceImplService.<init>(PutSituationServiceImplService.java:47)
    ... 7 more
4

2 に答える 2

1

誰かがより良い答えを持ってきたら、私はそれを選択されたものとしてマークしますが、今のところ:

これは、WebLogicがJAXB2.0とJAXB2.1を提供しているのに対し、このバージョンのCXFはJAXB2.2の機能を利用しているという事実に起因しているようです。

私の理解では、prefer-package-elements1)JDKにインポートされたクラス、または2)を使用したsun内部クラスを優先することはできません。jarファイルをJDK/JREの承認されたフォールドに配置するオプションがありますが、私はこのルートに行きたくありませんでした。

現在、CXFをv.2.2.12にダウングレードしました。これは、JAXB2.1を使用する最後のCXFバージョンです。

于 2012-06-22T08:12:57.197 に答える
0

METRO 2.0 ライブラリが原因で同じエラーが発生します。このライブラリは、wdsl から Web サービスを作成しようとすると、NetBeans プロジェクトに自動的に追加されます。

このライブラリは必要ないので、プロジェクトから削除しました。

于 2015-05-26T14:01:06.770 に答える