Asynchrony with Axis2-Nonblocking API
-------------------------------------

                 Key: ODE-956
                 URL: https://issues.apache.org/jira/browse/ODE-956
             Project: ODE
          Issue Type: New Feature
          Components: Axis2 Integration
            Reporter: Sathwik Bantwal Premakumar


To implement Axis2's non-blocking API to make a request/response service call 
asynchronously.

Related article:
http://www.ibm.com/developerworks/webservices/library/ws-axis2/index.html?ca=drs-
http://ws.apache.org/axis2/1_1/dii.html

This is really useful when we need to call an external/public service that 
takes a long time to respond, and that we have no authority to modify it, and 
we do not want to manage it with timeout parameters.

Here is what is needed:

1)    Understanding of the WS-Addressing WSDL Binding: 
http://www.w3.org/TR/ws-addr-wsdl/
2)    the Axis2 WS-Addressing-Module needs to be engaged. Until now it is 
disabled in all ODE deployments. 
3)    for testing, a small axis2 java client should be used, i.e. to invoke the 
hello world example (with setUseSeparateListener(true)).
4)    a SOAP Monitor is needed to monitor SOAP messages and headers.

Then some experiments need to be performed. Here is what should happen:
1. The client sends the request to ODE.
2. ODE consumes the message and the transport ACKs the reception (HTTP 202 
Accepted in the HTTP case)
3. ODE creates a new instance, does hello world and creates the response. The 
response is stored in the same MEX, since we're in a sync request-response 
operation.
4. Axis2 will open a new (anonymous) channel to the client and sends the 
message. Callback EPR has been transmitted via WS-Adressing header in the 
request.

When I tried that last time, the problem was, it actually worked fine, besides 
the fact that the request channel has not been closed and resulted in a 
timeout. Now I know that this can be fixed by adding a 
messageCtx.setProperty(DO_ASYNC, Boolean.TRUE); in the message receiver. This 
however should only be done in case this WS-Adressing-Binding should be used. 
Perhaps ODE could inspect the WSDL for occurrence of <wsaw:UsingAddressing/> 
and <wsaw:Anonymous> to determine whether a sync or async interaction should be 
used (I'd need to reread the spec to get sure).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to