top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

Help required on Springs WS-Addressing

+1 vote
334 views

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?

posted Jul 12, 2013 by Ranjeeth K Rao

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

1 Answer

0 votes

Did you check this one?
http://victor-ichim.blogspot.in/2011/09/asynchronous-web-services-with-ws.html
The example given works the way you want it.

Checkout this link too - https://blogs.oracle.com/sujit/entry/asynchronous_webservice

answer Jul 12, 2013 by Sudheendra
Similar Questions
+1 vote

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.

...