При вызове WS с прокси-серверами, сгенерированными с помощью wsimport, я получаю сообщение об ошибке: "Сообщение SOAP 1.2 недопустимо при отправке в конечную точку только SOAP 1.1".
Я работаю над Java-программой, работающей на сервере Tomee 7.0.3 и JDK1.7.0_40. Моя программа должна вызывать удаленный веб-сервис. Этот веб-сервис принадлежит партнеру, и до сих пор у меня есть только WSDL и сервис Mock в проекте SOAP-UI. Я использую wsimport для создания прокси. Поскольку WSDL использует SOAP1.2, я получаю сообщение об ошибке, предлагающее добавить опцию "-extension", и тогда, похоже, оно работает: я получаю свои прокси. Но когда я запускаю свою программу, сервис SOAP-UI Mock возвращает эту ошибку:
A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint.
И все же проект SOAP-UI и служба Mock были созданы с использованием того же WSDL, что и прокси.
Вот начало WSDL, показывающее ссылку на SOAP1.2:
<wsdl:definitions xmlns:ns="http://tempuri.org"
xmlns:ns1="http://tempuri.org/xsd"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsoap12="http://schemas.xmlsoap.org/wsdl/soap12/"
name="aAPIs" targetNamespace="http://tempuri.org">
<wsdl:types xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:schema xmlns:ns="http://tempuri.org/xsd"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://tempuri.org/xsd">
Но когда я смотрю на SOAP-запрос, который отправляю в службу Mock (благодаря обработчику JaxWS), я вижу, что пространство имен soap ссылается на SOAP 1.1 вместо 1.2:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
...
</soap:Header>
<soap:Body>
...
</soap:Body>
Поэтому мне кажется, что мои прокси работают с SOAP1.1, несмотря на то, что WSDL ссылается на SOAP 1.2. Есть ли способ заставить прокси работать с SOAP 1.2? Возможность добавить в wsimport, например?
Я благодарю вас за вашу помощь.