1

これで何が起こっているのか理解できません-cxfがsoap Webサービスに接続するのを確認するためのルートを設定しようとしています(実際のデータは気にしませんし、データが実際に「機能する」とは思っていませんが、理解できない例外がスローされ続けます:

正しく設定できているのだろうか。jar が欠落している可能性があると考えていましたが、他の Jar を取り込もうとしたときに依存関係の競合が発生しました。

すべてのjar構成をロードするためにmaven依存関係「camel-cxf」を使用しています

「理由: org.apache.cxf.bus.extension.ExtensionException: 拡張クラス org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl を読み込めませんでした。」

正確なエラーは

"エンドポイントのプロデューサーを作成できませんでした: エンドポイント[cxf://http://wsf.cdyne.com/WeatherWS/Weather.asmx?dataFormat=MESSAGE&portName=WeatherSoap&serviceClass=prototypes.CxfExample%24GetWeatherInformationSoapIn&serviceName=Weather&wsdlURL=http%3A%2F% 2Fwsf.cdyne.com%2FWeatherWS%2FWeather.asmx%3FWSDL].理由: org.apache.cxf.bus.extension.ExtensionException: 拡張クラス org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl を読み込めませんでした。

これを引き起こすために使用しているコードは

        camel.addComponent( "cxf", new CxfComponent() );

        camel.addRoutes( new RouteBuilder() {

            @Override
            public void configure() throws Exception {
                from( "timer://sometimer?delay=1s")
                .to( "cxf://http://wsf.cdyne.com/WeatherWS/Weather.asmx"
                     +"?wsdlURL=http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"
                     +"&dataFormat=MESSAGE"
                     +"&serviceClass=prototypes.CxfExample$GetWeatherInformationSoapIn"
                     +"&serviceName=Weather"
                     +"&portName=WeatherSoap"


                   );
            }
        });
        camel.start();
        Thread.sleep( 10000 );
        camel.stop();
4

1 に答える 1

3

私はそれを「解決」したと思います -

mvn:camel-cfx 依存関係が不十分

mvn:neethi 依存関係も必要です

AssertationBuildImpl クラスは、mvn:camel-cfx の jar セットに含まれていないクラスから拡張されます。これにより、AssertionBuildImpl は IDE で既知のクラスとしてリストされているように見えますが、実行時にクラスが読み込まれません。

これは、サードパーティのソースコードを分析することにより、追跡するのが恐ろしい問題でした

于 2013-02-01T11:51:16.367 に答える