1

无法弄清楚这是怎么回事 - 试图设置一个路由来只看到 cxf 连接到一个肥皂网络服务(我不关心实际数据,也不期望数据真正“工作”,但是它不断抛出我不明白的异常:

我想知道我是否正确配置它。我在想它可能是一个丢失的 jar,但是当我尝试引入其他 jar 时导致依赖冲突

我正在使用 Maven 依赖项“camel-cxf”来加载我所有的 jar 配置

“原因: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 集中的类扩展,这使得 AssertationBuildImpl 在 ide 中显示为已知类,但在运行时不会加载类

通过分析第三方的源代码,这是一个可怕的问题

于 2013-02-01T11:51:16.367 回答