Использование веб-сервиса с CXF в Mule 3.5

Я пытаюсь использовать веб-службу, используя компонент CXF в муле (Anypoint Studio). Итак, я попытался сгенерировать файл WSDL из URL-адреса, но у меня возникла эта ошибка: Rpc/encoded wsdls are not supported in CXF, поэтому я выполнил этот ответ.

Это сработало, и он сгенерировал клиентские заглушки, а затем скопировал файлы в мой проект mule.

но я получаю эту ошибку:

Service.SomeService.<init>(java.net.URL, javax.xml.namespace.QName) (java.lang.NoSuchMethodException)

Это мой поток:

<flow name="WebServiceTest">
          <cxf:jaxws-client
         clientClass="service.SomeService"
         wsdlLocation="http://127.0.0.1:8000/api/v2_soap/?wsdl"
        operation="test"/>         
      <outbound-endpoint address="http://127.0.0.1:8000/api.php/?type=v2_soap"/>
</flow>

Любые идеи?


person user2016    schedule 27.12.2015    source источник


Ответы (1)


Ваша конфигурация неверна, особенно URL-адрес исходящей конечной точки. Вы можете попробовать настроить клиент CXF в соответствии с документацией Mule.
Вы также можете создать клиент для своих служб JAX-WS, не создавая клиента из WSDL. Здесь вам понадобится копия интерфейса вашей службы и все ваши объекты данных локально, чтобы использовать что-то вроде этого: -

<flow name="csvPublisher">
  ...
  <cxf:jaxws-client serviceClass="org.example.HelloService" operation="sayHi"/>
  <outbound-endpoint address="http://localhost:63081/services/greeter"/>
</flow>

Другой подход - вы можете использовать клиент, созданный с помощью CXF, в качестве конечной точки исходящего трафика. Во-первых, вам нужно сгенерировать клиент CXF с помощью инструмента WSDL to Java из CXF или плагина Maven.
Затем вам нужно настроить что-то вроде следующего: -

<flow name="csvPublisher">
  ...
  <cxf:jaxws-client
         clientClass="org.apache.hello_world_soap_http.SOAPService"
         port="SoapPort"
         wsdlLocation="classpath:/wsdl/hello_world.wsdl"
         operation="greetMe"/>
  <outbound-endpoint address="http://localhost:63081/services/greeter"/>
</flow>

Лучше поместить wsdl в локальный путь к классам.

Пожалуйста, ознакомьтесь с полной документацией здесь в качестве ссылки, чтобы настроить ее: -
https://docs.mulesoft.com/mule-user-guide/v/3.7/consuming-web-services-with-cxf
и
Использование веб-службы с использованием Mule 3.4

person Anirban Sen Chowdhary    schedule 27.12.2015
comment
Спасибо за Ваш ответ! Мне очень жаль, что я не понял, что мне нужно сгенерировать из WSDL, поэтому другой подход, который вы предложили, не работает для меня, поскольку cxf не поддерживается, какие-либо другие идеи? - person user2016; 27.12.2015