top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

Getting the error: "No adapter for endpoint" when triggering SOAP Request

+1 vote
12,459 views

I am using Springs 3.0 with JAXB.. I am trying to retrieve a list of IDs through Webservice.. The WSDL is published properly.. But when I hit a SOAP request, I get a response which says:

No adapter for endpoint [public wsi.deviceprofile.GetDeviceProfileIDsResponse wsi.deviceprofile.DeviceProfileEndPoint.getDeviceProfileIDList()]: Is your endpoint annotated with @Endpoint, or does it implement a supported interface like MessageHandler or PayloadEndpoint?

My class is annotated with @EndPoint:

@Endpoint
public class DeviceProfileEndPoint implements DeviceProfileConstants {

    @Autowired
    private DeviceProfileManager deviceProfileManager;

    @PayloadRoot(localPart="GetDeviceProfileIDsRequest", namespace=NAMESPACE)
    @ResponsePayload
    public GetDeviceProfileIDsResponse getDeviceProfileIDList(){
        ObjectFactory factory = new ObjectFactory();
        GetDeviceProfileIDsResponse response = factory.createGetDeviceProfileIDsResponse();

        List<DeviceProfileWebVO> deviceProfiles = deviceProfileManager.getAllDeviceProfileWebVO();
        for(DeviceProfileWebVO deviceProfile : deviceProfiles)
            response.id.add(BigInteger.valueOf(deviceProfile.getDeviceId()));       

        return response;
    }
}

Few websites say this might be a problem with the XSD structure and have suggested few guidelines (like, defining the request/response elements inline rather than a reference).. I have ensured that those have been taken care of. However, The problem remains. Here is my XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://www.hp.com/schema/m2m/" xmlns:tns="http://www.hp.com/schema/m2m/">
    <!-- 
        Get list of all the Device Profile IDs
    -->
    <xs:element name="GetDeviceProfileIDsRequest">  
    </xs:element>
    <xs:element name="GetDeviceProfileIDsResponse">
        <xs:complexType>
            <xs:sequence minOccurs="0" maxOccurs="unbounded">
                <xs:element name="id" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>

Does anyone know any other possible reasons? Let me know if you need more details.

posted Jul 3, 2013 by Ranjeeth K Rao

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button
Yes Ranjeeth this problem is related with XSD, you need to correct your XSD. Let me have a look into your problem.
check the following link http://forum.springsource.org/archive/index.php/t-46439.html specially the second problem.

2 Answers

+1 vote
 
Best answer

I figured out the answer. It was more of a Springs configuration rather than XSD issue.

In the springs-ws-servlet.xml, I had to mention the "contextPath" for the marshaller which I had missed out before. "contextPath" property would refer to the package where the JAXB generated classes(request/response) are present.

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="wsi.deviceprofile"/>
    <property name="schema" value="/WEB-INF/schema/DevProfMgmtService.xsd" />
</bean>

Thanks Salil and Sudhee for your inputs.

answer Jul 3, 2013 by Ranjeeth K Rao
+1 vote
answer Jul 3, 2013 by Sudheendra
Similar Questions
+1 vote

Can anybody point me to create and test an async web service using ws-addressing? The message exchange I want to implement is this:
1. Client sends a SOAP request message to the Server
2. Server sends an HTTP 202 Accepted to the Client
3. Server sends a SOAP response message to the Client
4. Client sends an HTTP 202 Accepted to the Server

I am using Springs WS 2.0.5. The Springs documentation mentions the configuration required to make configurations on server side and client side to access a web service asynchronously. But I am not able to arrive at a client to test if the server implementation is proper. I tried using SOAP UI to trigger request with relevant WS-A headers set. However, I receive a "synchronous" response.

Should the client also implement and expose an Endpoint to receive the response?

+3 votes

I am using Springs 3. I have a method in an Endpoint class which handles the web service request. The method is annotated with @Action to make it asynchronous. The SOAP request header contains some information (like UUID, Reply Address, etc). I need to be able to access these header information from inside this method.

The Spring WS MessageContext as well as the Apache axis MessageContext seems to be empty, so I am not able to use it inside the method to derive the SOAP header.

0 votes

I am working CGI project using C programming and I am reading the login detail in form input fields and when I try to submit the form with empty fields it gives me 502 Bad Gateway CGI was not in CGI/1.1 complaint.note that i am redirecting to the same page I am reading the the fields.

...