You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by "Sathwik Bantwal Premakumar (Created) (JIRA)" <ji...@apache.org> on 2012/03/07 13:10:59 UTC
[jira] [Created] (ODE-956) Asynchrony with Axis2-Nonblocking API
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
[jira] [Updated] (ODE-956) Asynchrony with Axis2-Nonblocking API
Posted by "Sathwik Bantwal Premakumar (Updated) (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ODE-956?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sathwik Bantwal Premakumar updated ODE-956:
-------------------------------------------
Attachment: ODE-956.patch
> 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
> Attachments: ODE-956.patch
>
>
> 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
[jira] [Updated] (ODE-956) Asynchrony with Axis2-Nonblocking API
Posted by "Sathwik Bantwal Premakumar (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ODE-956?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sathwik Bantwal Premakumar updated ODE-956:
-------------------------------------------
Labels: patch (was: )
> 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
> Labels: patch
> Attachments: ODE-956.patch
>
>
> 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
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ODE-956) Asynchrony with Axis2-Nonblocking API
Posted by "Sathwik Bantwal Premakumar (Commented) (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ODE-956?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13224230#comment-13224230 ]
Sathwik Bantwal Premakumar commented on ODE-956:
------------------------------------------------
Credits to Tammo for this feature implementation. I am contributing the testcase for the feature.
> 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
> Attachments: ODE-956.patch
>
>
> 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