代码之家  ›  专栏  ›  技术社区  ›  anakin59490

SOAP端点必须返回字符串值

  •  0
  • anakin59490  · 技术社区  · 7 年前

    我是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"));
        }
    

    enter image description here

    少了什么?

    1 回复  |  直到 7 年前
        1
  •  0
  •   anakin59490    7 年前

    好的,我明白了!

    我的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;
        }
    

    我收到一个“联络”元素,并返回一个联络响应元素 我用字符串值设置了connectionresult属性