Несоответствие префикса и структуры пространства имен запроса SOAP с использованием Spring Boot и JAXBJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Несоответствие префикса и структуры пространства имен запроса SOAP с использованием Spring Boot и JAXB

Сообщение Anonymous »

Я работаю над проектом Spring Boot, в котором мне нужно использовать веб-службу SOAP. Я использовал wsdl2java для генерации клиентского кода. Однако у меня возникли проблемы со сгенерированной структурой сообщения запроса SOAP.
Вот ожидаемый запрос SOAP от SOAP-UI: Однако мое приложение Spring Boot генерирует следующий запрос SOAP: Различия заключаются в следующем: при попытке я получаю сообщение об ошибке из-за неправильной полезной нагрузки SOAP запроса.
  • Префиксы пространства имен ( против SOAP-ENV).
  • Дополнительные ненужные пространства имен.
Вот мой Класс GetPolicy:

Код: Выделить всё

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"policyId"
})
@XmlRootElement(name = "GetPolicy")
public class GetPolicy {

@XmlElementRef(name = "policyId", namespace = "http://uri.org/", type = JAXBElement.class, required = false)
protected JAXBElement policyId;

public JAXBElement getPolicyId() {
return policyId;
}

public void setPolicyId(JAXBElement value) {
this.policyId = value;
}
}
А вот конфигурация и код, в котором я выполняю запрос:

Код: Выделить всё

@Autowired
private WebServiceTemplate webServiceTemplate;

ObjectFactory factory = new ObjectFactory();
GetPolicy request = factory.createGetPolicy();
request.setPolicyId(factory.createGetPolicyPolicyId("12345"));

webServiceTemplate.setMarshaller(jaxb2Marshaller);
webServiceTemplate.setUnmarshaller(jaxb2Marshaller);
webServiceTemplate.setDefaultUri("SOAP_SERVER_URL");

JAXBElement response = (JAXBElement) webServiceTemplate.marshalSendAndReceive(request, new SoapActionCallback("SOAP_ACTION"));
return response.getValue();
Я также обеспечил правильное определение пространства имен на уровне пакета в package-info.java:

Код: Выделить всё

@jakarta.xml.bind.annotation.XmlSchema(
namespace = "http://uri.org/",
elementFormDefault = jakarta.xml.bind.annotation.XmlNsForm.QUALIFIED
)
package my.package.name;
Несмотря на эти конфигурации, сгенерированный запрос SOAP имеет неправильные префиксы пространства имен и включает дополнительные пространства имен. Кроме того, я знаю, что, добавив XmlN, я могу исправить проблему с префиксом, но у меня есть несколько URI пространств имен, которые должны соответствовать одному и тому же префиксу. На этом я и остановился.
Вопросы:
  • Как я могу гарантировать, что сгенерированный запрос SOAP использует Soapenv в качестве префикса пространства имен вместо SOAP-ENV?
  • Как предотвратить включение ненужных пространств имен в
    сгенерированный запрос SOAP?
Спасибо. Любая помощь будет принята с благодарностью!

Подробнее здесь: https://stackoverflow.com/questions/785 ... oot-and-ja
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»