2013-03-07 7 views
6

में एंडपॉइंट के लिए कोई एडाप्टर नहीं, मैं बस स्प्रिंग वेब सेवाओं का उपयोग करके इस त्रुटि को समझ नहीं सकता। मेरा मानना ​​है कि मैंने सब ठीक से किया है।स्प्रिंग वेब सेवा प्रतिक्रिया

साबुन त्रुटि रिस्पांस

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header/> 
    <SOAP-ENV:Body> 
     <SOAP-ENV:Fault> 
     <faultcode>SOAP-ENV:Server</faultcode> 
     <faultstring xml:lang="en">No adapter for endpoint [public void org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.PersonManagerSyncSoapBindingImpl.readPerson(org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.ReadPersonRequest,org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.Imsx_RequestHeaderInfoType,org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.holders.ReadPersonResponseHolder,org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.holders.Imsx_ResponseHeaderInfoTypeHolder)]: Is your endpoint annotated with @Endpoint, or does it implement a supported interface like MessageHandler or PayloadEndpoint?</faultstring> 
     </SOAP-ENV:Fault> 

एनोटेशन

@Endpoint 
public class PersonManagerSyncSoapBindingImpl implements org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.PersonManagerSyncPortType{ 


    @PayloadRoot(localPart = "readPersonRequest", namespace = "http://www.imsglobal.org/services/lis/pms2p0/wsdl11/sync/imspms_v2p0") 
    @ResponsePayload 
    public void readPerson(@RequestPayload org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.ReadPersonRequest parameters, org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.Imsx_RequestHeaderInfoType headerInfoParameters, @RequestPayload org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.holders.ReadPersonResponseHolder response, @RequestPayload org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.holders.Imsx_ResponseHeaderInfoTypeHolder headerInfoResponse) { 
     response.value = new org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.ReadPersonResponse(); 
     headerInfoResponse.value = new org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.Imsx_ResponseHeaderInfoType(); 
    } 

वसंत-WS-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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" 
      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"> 

    <context:component-scan base-package="*"></context:component-scan> 
    <sws:annotation-driven/> 

    <sws:dynamic-wsdl id="personServiceManagement"               
     portTypeName="PersonManagerSyncPortType"               
     locationUri="/endpoints/"              
     targetNamespace="http://www.imsglobal.org/services/lis/pms2p0/wsdl11/sync/imspms_v2p0">        
     <sws:xsd location="/WEB-INF/wsdl/xsd/PersonManagementService.xsd"/>             
    </sws:dynamic-wsdl> 

</beans> 

उत्तर

3

मुझे लगता है कि आप वापसी मान खो रहे हैं। स्प्रिंग-डब्ल्यूएस अनुरोध/प्रतिक्रिया संयोजन को मैप करने के लिए विधि हस्ताक्षर का उपयोग करता है। उदाहरण के लिए, मैं अपने उत्पन्न डबल्यूएसडीएल में निम्नलिखित आपरेशन है:

<wsdl:operation name="GetHiredCandidates"> 
    <wsdl:input message="tns:GetHiredCandidatesRequest" name="GetHiredCandidatesRequest"></wsdl:input> 
    <wsdl:output message="tns:GetHiredCandidatesResponse" name="GetHiredCandidatesResponse"></wsdl:output> 
</wsdl:operation> 

इस ऑपरेशन पर एक विधि नक़्शा बनाने के लिए इनपुट और आउटपुट डबल्यूएसडीएल में परिभाषित मैच के लिए ResponsePayload और RequestPayload जरूरत:

@ResponsePayload 
public GetHiredCandidatesResponse getKandidaat (@RequestPayload GetHiredCandidatesRequest) { 
    .. 

    return getHiredCandidatesResponse; 
} 

उम्मीद है की यह मदद करेगा!

+0

हा फ्लॉप सूचना है कि की मदद से हल किया है, लेकिन हाँ यह समझ आता है। मैं कुछ और स्थानांतरित हो गया लेकिन मुझे विश्वास है कि यह समस्या है। –

18

मैं एक ऐसी ही त्रुटि संदेश था। मेरी समस्या अनुरोध और प्रतिक्रिया वर्ग में थी जिसे मैंने एक्सएसडी से उत्पन्न किया था। यह @XMLRootElement एनोटेशन चूक गया। इसने ऑपरेशन का विवरण (डब्लूएसडीएल में) और कार्यान्वित विधि (एंडपॉइंट में) का विवरण मेल नहीं खाया। मेरी एंडपॉइंट विधि में JAXBElement जोड़ने से मेरी समस्या हल हो गई।

import javax.xml.bind.JAXBElement; 

@PayloadRoot(namespace = "http://foo.bar/books", localPart = "GetBook") 
@ResponsePayload 
public JAXBElement<MyReponse> getBook(@RequestPayload JAXBElement<MyRequest>) { 
    ... 

अधिक जानकारी के लिए इस ब्लॉग देखें: spring-ws: No adapter for endpoint

+0

धन्यवाद! यह मेरे लिए इसी तरह का मुद्दा हल किया। मुझे 'ऑब्जेक्ट फैक्ट्री' कक्षा को देखना चाहिए था, कई जेएक्सबीमेंट ऑब्जेक्ट्स इस्तेमाल किए गए थे। – zygimantus

संबंधित मुद्दे