CXF 2.4.2:未找到命名空间的管道启动器 http://schemas.xmlsoap.org/soap/http
我有一个从 wsdl 生成的服务客户端。我正在尝试调用远程服务,但收到下面看到的管道启动器错误。我尝试了许多解决方案,但没有成功。
我发现建议使用http-jetty扩展的解决方案(旧帖子)。我不认为这对我有意义,因为服务器不在本地运行。
我还发现,对我有帮助的最接近的配置是一个示例 cxf.xml 文件,其中包含:
<bean class="org.apache.cxf.transport.local.LocalTransportFactory"
lazy-init="false">
<property name="transportIds">
<list>
<value>http://cxf.apache.org/transports/local</value>
<value>http://cxf.apache.org/transports/http</value>
<value>http://schemas.xmlsoap.org/soap/http</value>
<value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
</list>
</property>
</bean>
此配置提供了有关如何配置传输工厂并将其绑定到 http://schemas.xmlsoap.org/soap/http 的指导。当我使用HTTPTransportFactory尝试此操作时,我收到一个异常,它无法初始化(没有这样的方法错误)。
Caused by: org.apache.cxf.BusException: No conduit initiator was found for the namespace http://schemas.xmlsoap.org/soap/http.
at org.apache.cxf.transport.ConduitInitiatorManagerImpl.getConduitInitiator(ConduitInitiatorManagerImpl.java:112)
at org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(AbstractConduitSelector.java:73)
at org.apache.cxf.endpoint.UpfrontConduitSelector.prepare(UpfrontConduitSelector.java:61)
at org.apache.cxf.endpoint.ClientImpl.prepareConduitSelector(ClientImpl.java:708)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:476)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:309)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:261)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:127)
预防:此时,我将停止尝试将 CXF 客户端升级到 2.4.2 并回退到最旧的版本(2.2 系列)。这并不理想。
我想继续进行升级。有关如何配置 CXF 2.4.X 以便我的客户端专用 HTTP SOAP 配置线正确提供的任何建议都将得到很多认可。