Как сделать звонок через javax.xml.ws.Service
Создан новый стандартный проект 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
s, и мне нужно выполнить такой запрос для каждого из них. Делать это вручную в SoapUI немного раздражает, поэтому я хотел бы автоматизировать его с помощью простого консольного Java-приложения.
2 ответа
Следующий шаг - получить 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.
Вы можете использовать JAX-WS в качестве клиента.
В основном вы используете wsimport для создания классов-заглушек Java, которые обертывают веб-сервис, а затем вы используете эти заглушки в своем коде Java. Заглушки заботятся обо всем переводе XML, как для вашего запроса, так и для ответа.
Учебное пособие находится здесь: http://docs.oracle.com/javaee/5/tutorial/doc/bnayn.html
Ищите часть под названием: "Простой клиент JAX-WS"