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/06/16 10:47:06 UTC

DO NOT REPLY [Bug 20803] New: - AXIS doesn't catch any kind of RuntimeException on handler

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=20803>.
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=20803

AXIS doesn't catch any kind of RuntimeException on handler

           Summary: AXIS doesn't catch any kind of RuntimeException on
                    handler
           Product: Axis
           Version: current (nightly)
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Minor
          Priority: Other
         Component: Basic Architecture
        AssignedTo: axis-dev@ws.apache.org
        ReportedBy: kimuratsy@nttdata.co.jp
                CC: kimuratsy@nttdata.co.jp


JAX-RPC spec 1.0 says "Throw the JAXRPCException or any other
RuntimeException for any handler specific runtime error. If
JAXRPCException is thrown by a handleRequest method, the HandlerChain
terminates the further processing of this handler chain. On the server
side, the HandlerChain generates a SOAP fault that indicates ..."
However, the current impl of HandlerChain is;

  package org.apache.axis.handlers.soap;
  :
  public class SOAPService extends SimpleTargetedChain
  {

    public void invoke(MessageContext msgContext) throws AxisFault {
        HandlerInfoChainFactory handlerFactory = (HandlerInfoChainFactory)
                           this.getOption(Constants.ATTR_HANDLERINFOCHAIN);
        HandlerChainImpl handlerImpl = null;
        if (handlerFactory != null) handlerImpl = (HandlerChainImpl)
                            handlerFactory.createHandlerChain();
        boolean result = true;
        
        if (handlerImpl != null) {
            result = handlerImpl.handleRequest(msgContext);
        }
        
        if (result) {
            super.invoke(msgContext);
        } else {
            msgContext.setPastPivot(true);
        }
 
        if ( handlerImpl != null) {
            handlerImpl.handleResponse(msgContext);
            handlerImpl.destroy();
        }
    }

It doesn't catch any kind of RuntimeException on handler implementations.

Best Regards,

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