Как сделать звонок через javax.xml.ws.Service - PullRequest
4 голосов
/ 29 марта 2012

Создан новый стандартный проект Java 7 в Eclipse и успешно удалось получить экземпляр javax.xml.ws.Service, например, так:

  String wsdlURL = "http://example.com:3000/v1_0/foo/bar/SomeService?wsdl";
  String namespace = "http://foo.bar.com/webservice";
  String serviceName = "SomeService";
  QName serviceQN = new QName(namespace, serviceName);

  Service service = Service.create(new URL(wsdlURL), serviceQN);

Это нормально работает в основном методе, так что, насколько я вижу, эта часть работает. Но я не могу понять, как на самом деле использовать его. В SoapUI я вызываю этот же сервис с запросом, который выглядит следующим образом:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://foo.bar.com/webservice">
   <soapenv:Header/>
   <soapenv:Body>
      <web:SomeWebServiceRequest acAccountName="name" acAccountPassword="password">
         <SomeRequest>
            <id>012345678901234</id>
            <action>Fix</action>
         </SomeRequest>
      </web:SomeWebServiceRequest>
   </soapenv:Body>
</soapenv:Envelope>

Как я могу сделать тот же запрос в Java? Моя цель состоит в том, чтобы у меня был длинный список этих id, и мне нужно выполнить такой запрос для каждого из них. Делать это вручную в SoapUI немного раздражает, поэтому я хотел бы автоматизировать его с помощью простого консольного приложения Java.

Ответы [ 2 ]

8 голосов
/ 29 марта 2012

Следующий шаг - получить Port от вашего сервиса:

Service service = Service.create(new URL(wsdlURL), serviceQN); // this is where you are.
QName portQName = new QName(portNamespace, portName);
YourPortInterface port = service.getPort(portQName, YourPortInterface.class);

YourPortInteface будет сгенерировано в течение wsimport, или вы можете создать и аннотировать его самостоятельно, если у вас достаточно опыта в «чтении» wsdl.

2 голосов
/ 29 марта 2012

Вы можете использовать JAX-WS в качестве клиента.

В основном вы используете wsimport для создания классов-заглушек Java, которые обертывают веб-сервис, затем вы используете эти заглушки в своем Java-коде.Заглушки заботятся обо всем переводе XML, как для вашего запроса, так и для ответа.

Учебное пособие здесь: http://docs.oracle.com/javaee/5/tutorial/doc/bnayn.html
Найдите часть под названием: "Простой клиент JAX-WS"

...