Конечная точка SOAP должна возвращать строковое значение - PullRequest
0 голосов
/ 25 сентября 2018

Я новичок в технологии SOAP,

Я хотел бы просто проверить эту конечную точку:

Мой файл Java:

@Endpoint
public class DestinataireEndpoints {

    private static final String NAMESPACE_URI = "http://www.opensolution.com/";

    @Autowired
    private DestinataireService destinataireService;    

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "LiaisonResponse")
    @ResponsePayload
    public String LiaisonResponse() {
        return "SAMPLE";
    }

Мой файл xsd:

<xs:element name="LiaisonResponse">
       <xs:complexType>
         <xs:sequence>
           <xs:element minOccurs="0" maxOccurs="1" name="LiaisonResult" type="xs:string" />
         </xs:sequence>
       </xs:complexType>
     </xs:element>

Это мой файл конфигурации:

@EnableWs
@Configuration
public class SoapConfig extends WsConfigurerAdapter {
    @Bean
    public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
        MessageDispatcherServlet servlet = new MessageDispatcherServlet();
        servlet.setApplicationContext(applicationContext);
        servlet.setTransformWsdlLocations(true);
        return new ServletRegistrationBean(servlet, "/ws/*");
    }

    @Bean(name = "destinataire")
    public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema statesSchema) {
        DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
        wsdl11Definition.setPortTypeName("StatesPort");
        wsdl11Definition.setLocationUri("/ws");
        wsdl11Definition.setTargetNamespace("http://www.opensolution.com/");
        wsdl11Definition.setSchema(statesSchema);
        return wsdl11Definition;
    }

    @Bean
    public XsdSchema statesSchema() {
        return new SimpleXsdSchema(new ClassPathResource("destinataire.xsd"));
    }

Я использую SoapUI для тестирования, и вот что я получаю:

enter image description here

Чего не хватает?

1 Ответ

0 голосов
/ 25 сентября 2018

ОК, я понимаю!

В моем xsd есть два элемента:

 <xs:element name="Liaison">
       <xs:complexType />
 </xs:element>
 <xs:element name="LiaisonResponse">
    <xs:complexType>
       <xs:sequence>
         <xs:element minOccurs="0" maxOccurs="1" name="LiaisonResult" type="xs:string" />
        </xs:sequence>
    </xs:complexType>
 </xs:element>

Я изменил свою конечную точку:

@Endpoint
public class DestinataireEndpoints {

    private static final String NAMESPACE_URI = "http://www.opensolution.com/";

    @Autowired
    private DestinataireService destinataireService;    

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "Liaison")
    @ResponsePayload
    public LiaisonResponse Liaison() {
        LiaisonResponse liaisonResponse = new LiaisonResponse();
        liaisonResponse.setLiaisonResult("tests");
        return liaisonResponse;
    }

Я получаюЭлемент "Liaison", и я возвращаю элемент LiaisonResponse, и я устанавливаю атрибут liaisonResult со значением String

...