Uploaded image for project: 'ODE'
  1. ODE
  2. ODE-956

Asynchrony with Axis2-Nonblocking API

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • Axis2 Integration

    Description

      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).

      Attachments

        1. ODE-956.patch
          60 kB
          Sathwik

        Activity

          People

            Unassigned Unassigned
            sathwik Sathwik
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: