You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2003/03/13 10:39:02 UTC

DO NOT REPLY [Bug 17950] New: - Defect of the jax-rpc handler impl on the processing model

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17950>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17950

Defect of the jax-rpc handler impl on the processing model

           Summary: Defect of the jax-rpc handler impl on the processing
                    model
           Product: Axis
           Version: 1.1rc2
          Platform: All
               URL: http://marc.theaimsgroup.com/?t=104584191000004&r=1&w=2
        OS/Version: All
            Status: NEW
          Severity: Major
          Priority: Other
         Component: Basic Architecture
        AssignedTo: axis-dev@ws.apache.org
        ReportedBy: kimuratsy@nttdata.co.jp


The jax-rpc ver 1.0 spec says as described below in the event of
'return false' on processing a handleRequest method of handlers.

[extract of the spec]
  "In the default processing model, the respose handler chain starts
 processing from the same Handler instance (that returned false) and
 goes backward in the execution sequence".

  However, the current impl of AXIS mishandles the rule, it has been
processing as the fixed logic as follows;
 [*] Please take particular note of the index 'i' in the 'for-loop'
     on the handleResponse method.

.........*.........*.........*.........*.........*.........*.........*
package org.apache.axis.handlers;
   :
   :

public class HandlerChainImpl extends ArrayList
                   implements javax.xml.rpc.handler.HandlerChain {
   :
   :

  public boolean handleRequest(MessageContext _context) {
      SOAPMessageContext context = (SOAPMessageContext) _context;

      boolean processFault = false;

      for (int i = 0; i < size(); i++) {
          Handler currentHandler = getHandlerInstance(i);
          try {
              if (currentHandler.handleRequest(context) == false) {
                  return false;
              }
          } catch (SOAPFaultException sfe) {
              throw sfe;
          }
      }
      return true;
  }

  public boolean handleResponse(MessageContext context) {
      for (int i = size() - 1; i >= 0; i--)
          if (getHandlerInstance(i).handleResponse(context) == false)
              return false;
      return true;
  }
   :
   :
.........*.........*.........*.........*.........*.........*.........*

  This code doesn't follow the spec, so 'Sreekant Thirunagari'
<st...@chutneytech.com> and I have discussed how to resolve
this issue on axis-user-ml.  In addition, the URL shows you
the archival record of our course.

Best Regards,

  Toshi (Toshiyuki Kimura) <ki...@nttdata.co.jp>
  R&D Headquarters
  NTT DATA Corporation