У меня есть сервисный клиент, сгенерированный из wsdl. Я пытаюсь вызвать удаленный сервис и получаю сообщение об ошибке инициатора канала, показанное ниже. Я пробовал многочисленные решения без успеха.
Я нашел решения (старые сообщения), которые рекомендуют использовать http-jetty extensions . Я не верю, что это имеет смысл для меня, потому что сервер не работает локально.
Я также обнаружил, что наиболее близкой конфигурацией, которая мне помогает, является пример 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 только для клиента были бы очень ценными.