Spring-ws клиент из WSDL - PullRequest
       20

Spring-ws клиент из WSDL

2 голосов
/ 15 апреля 2010

Я создал клиента POX (сгенерированный из jaxb2 из XSD) с использованием spring-ws, но не совсем понимаю, как создать SOAP-клиент (сгенерированный из WSDL). Я использую wsimport для генерации заглушек, но кажется, что это на 1 шаг слишком далеко для использования с spring-ws. Заглушка на самом деле обрабатывает транспорт, где, как и в случае клиента POX, Spring обрабатывает транспорт. Итак, мой вопрос: возможно ли генерировать только транспортные объекты через wsimport или jaxb2 (например, клиент POX), или как я вызываю / отправляю в WebServiceTemplate?

1 Ответ

5 голосов
/ 26 ноября 2010

Да, вы можете.

Убедитесь, что ваш XSD импортирован и не встроен в ваш wsdl.

Направьте xjc (из Jaxb2) на ваш xsd и позвольте ему генерировать ваши классы.

Теперь проверьте вашу схему.

Если ваш элемент запроса и ответа имеет встроенные сложные типы, используйте это:

RequestElement requestElement = new RequestElement();
ResponseElement responseElement = (ResponseElement) webServiceTemplate.marshalSendAndReceive(requestElement);

в противном случае (ссылающиеся на сложные типы) используйте это:

RequestType requestType = new RequestType();
JAXBElement<RequestType> request = new ObjectFactory().createRequestType(requestType);
ResponseType responseType = ((JAXBElement<ResponseType>) webServiceTemplate.marshalSendAndReceive(request)).getValue();

RequestElement, ResponseElement, RequestType и ResponseType, конечно, являются только примерами.Замените их теми классами, которые Xjc генерирует из вашей схемы.

...