Как настроить Spring WS для создания SOAP 1.2 - PullRequest
0 голосов
/ 06 мая 2018

Я хочу, чтобы мой веб-сервис генерировал сообщения в соответствии с протоколом SOAP 1.2. По умолчанию Spring WS настроен для протокола SOAP 1.1, и когда я отправляю сообщение своему сервису, представленному в SOAP 1.2, я получаю исключение: «неверный тип содержимого для версии SOAP. Получил: application / soap + xml; charset = UTF-8 Ожидается: text / xml ". Я перепробовал много способов решить эту проблему, но все были бесполезны. Вот мой XML-файл конфигурации:

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:sws="http://www.springframework.org/schema/web-services" 
  xmlns:util="http://www.springframework.org/schema/util"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/web-services 
  http://www.springframework.org/schema/web-services/web-services-2.0.xsd
  http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-3.0.xsd
  http://www.springframework.org/schema/util 
  http://www.springframework.org/schema/util/spring-util.xsd">


 <context:component-scan base-package="com.soft.service"/>  

  <bean id="soapMessageFactory" 
       class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
     <property name="soapVersion">

  <util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12"/>
     </property>
   </bean>


  <sws:annotation-driven/>  

   <sws:dynamic-wsdl id="myrequest"
      portTypeName = "myrequestPort"
      locationUri = "/ws/"   
      targetNamespace = "http://soft.com/namespace"
      createSoap11Binding="false"
      createSoap12Binding="true">           

      <sws:xsd location = "/WEB-INF/schema.xsd"/>  
   </sws:dynamic-wsdl>      

</beans>

1 Ответ

0 голосов
/ 06 мая 2018

Я нашел решение этой проблемы! Я добавил параметр инициализации "messageFactoryBeanName" в сервлет "MessageDispatcherServlet" в дескрипторе развертывания web.xml:

 <servlet>
        <servlet-name>spring-ws</servlet-name>
        <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>         
          <init-param> 
             <param-name>transformWsdlLocations</param-name>
             <param-value>true</param-value>
          </init-param>

          <init-param> 
             <param-name>messageFactoryBeanName</param-name>
             <param-value>soapMessageFactory</param-value>
          </init-param>
    </servlet>
...