Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 80709 invoked from network); 14 Apr 2004 00:56:29 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 14 Apr 2004 00:56:29 -0000 Received: (qmail 74579 invoked by uid 500); 14 Apr 2004 00:56:08 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 74546 invoked by uid 500); 14 Apr 2004 00:56:07 -0000 Mailing-List: contact axis-dev-help@ws.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@ws.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-dev@ws.apache.org Received: (qmail 74523 invoked from network); 14 Apr 2004 00:56:07 -0000 Received: from unknown (HELO fractal.allesta.org) (216.105.35.46) by daedalus.apache.org with SMTP; 14 Apr 2004 00:56:07 -0000 Received: from palanga (ca-crlsbd-cuda1-c7b-b-0.crlsca.adelphia.net [68.70.227.0] (may be forged)) by fractal.allesta.org (8.9.3/8.9.3) with ESMTP id RAA26310 for ; Tue, 13 Apr 2004 17:56:08 -0700 Message-ID: <002501c421bb$a4cb89e0$6401a8c0@palanga> From: "Algirdas P. Veitas" To: Subject: Issue w/ JAXRPC Handler Compliance.... Date: Tue, 13 Apr 2004 17:58:34 -0700 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0020_01C42180.F048F460" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4927.1200 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4927.1200 X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N This is a multi-part message in MIME format. ------=_NextPart_000_0020_01C42180.F048F460 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Folks, We have a run into an issue with the handler chain flow with respect to = processing faults. We just tried using Axis 1.2 beta and the problem = still appears exist. The following is our deployment definition for a particular service: During testing, we throw a SOAPFaultException during a call to = x.y.DDDHandler.handleRequest(MessageContext ctx) public void handleRequest(MessageContext ctx) { throw new SOAPFaultException(....); } but only x.y.DDDHandler's handleFault(...) is invoked. We are expecting = that each handler configured previous to DDDHandler in the would have their respective handleFault(...) called. Below shows in more detail the expected course of action (according to = the JAXRPC1.1 specification) , the Axis 1.2 behavior in more detail and = the relevant section from the specification. Can someone let me know if this a known-issue? Willing to roll up my = sleeves and patch this........ Thanks, Al Expected Course of Action: -- start of chain --- AAAHandler.handleRequest() BBBHandler.handleRequest() CCCHandler.handleRequest() DDDHandler.handleRequest() throws SOAPFaultException DDDHandler.handleFault()=20 CCCHandler.handleFault()=20 BBBHandler.handleFault()=20 AAAHandler.handleFault()=20 -- end of chain --- Axis 1.2 Behavior -- start of chain -- AAAHandler.handleRequest() BBBHandler.handleRequest() CCCHandler.handleRequest() DDDHandler.handleRequest() throws SOAPFaultException DDDHandler.handleFault()=20 -- end of chain -- Quoting from the specification: "Throw the javax.xml.rpc.soap.SOAPFaultException to indicate a SOAP = fault. The Handler implementation class has the responsibility of setting the = SOAP fault in the SOAP message in either handleRequest and/or handleFault method. If SOAPFaultException is thrown by a server-side request handler's = handleRequest method, the HandlerChain terminates the further processing of the = request handlers in this handler chain and invokes the handleFault method on the = HandlerChain with the SOAP message context. Next, the HandlerChain invokes the = handleFault method on handlers registered in the handler chain, beginning with the = Handler instance that threw the exception and going backward in execution. The = client-side request handler's handleRequest method should not throw the SOAPFault- Exception. Refer to the SOAP specification for details on the various = SOAP faultcode values and corresponding specification." ------=_NextPart_000_0020_01C42180.F048F460 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi Folks,
 
We have a run into an issue with the = handler chain=20 flow with respect to processing faults.  We just tried using Axis = 1.2 beta=20 and the problem still appears exist.
 
The following is our deployment = definition for a=20 particular service:
 
<service name=3D"MyService"=20 provider=3D"Handler">
    =20 <handlerInfoChain>
       &nb= sp;=20 <handlerInfo=20 classname=3D"x.y.AAAHandler"/>
      =   =20 <handlerInfo=20 classname=3D"x.y.BBBHandler"/>
      =   =20 <handlerInfo=20 classname=3D"x.y.CCCHandler"/>
      =   =20 <handlerInfo=20 classname=3D"x.y.DDDHandler"/>
      =   =20 <handlerInfo classname=3D"x.y.EEEHandler"/>
   =20 </handlerInfoChain>
  <parameter name=3D"handlerClass"=20 value=3D"x.y.ServiceHandler"/>
</service>
 
During testing, we throw a = SOAPFaultException=20 during a call to x.y.DDDHandler.handleRequest(MessageContext = ctx)
 
public void = handleRequest(MessageContext=20 ctx)
{
    throw new=20 SOAPFaultException(....);
}
 
but only x.y.DDDHandler's = handleFault(...) is=20 invoked.  We are expecting that each handler configured previous to = DDDHandler in the
<handlerInfoChain> would have = their=20 respective handleFault(...) called.
 
Below shows in more detail the = expected course=20 of action (according to the JAXRPC1.1 specification) , the Axis = 1.2=20 behavior in more detail and the relevant section from the=20 specification.
 
Can someone let me know if this a=20 known-issue?  Willing to roll up my sleeves and patch=20 this........
 
Thanks,
    Al
 
 
Expected Course of Action:
 
    -- start of chain=20 ---
   =20 AAAHandler.handleRequest()
   =20 BBBHandler.handleRequest()
   =20 CCCHandler.handleRequest()
    = DDDHandler.handleRequest()=20 throws SOAPFaultException
    = DDDHandler.handleFault()=20
   =20 CCCHandler.handleFault()
    BBBHandler.handleFault()
    AAAHandler.handleFault()
    -- end of chain ---
 
Axis 1.2 Behavior
    -- start of chain=20 --
   =20 AAAHandler.handleRequest()
   =20 BBBHandler.handleRequest()
   =20 CCCHandler.handleRequest()
    = DDDHandler.handleRequest()=20 throws SOAPFaultException
    = DDDHandler.handleFault()=20
    -- end of chain = --
 
Quoting from the = specification:
 
"Throw the = javax.xml.rpc.soap.SOAPFaultException to=20 indicate a SOAP fault.
The Handler implementation class has the=20 responsibility of setting the SOAP fault in
the SOAP message in = either=20 handleRequest and/or handleFault method. If
SOAPFaultException is = thrown by a=20 server-side request handler’s handleRequest
method, the = HandlerChain=20 terminates the further processing of the request handlers
in this = handler=20 chain and invokes the handleFault method on the HandlerChain
with the = SOAP=20 message context. Next, the HandlerChain invokes the = handleFault
method on=20 handlers registered in the handler chain, beginning with the = Handler
instance=20 that threw the exception and going backward in execution. The=20 client-side
request handler’s handleRequest method should not = throw the=20 SOAPFault-
Exception. Refer to the SOAP specification for details on = the=20 various SOAP
faultcode values and corresponding = specification."
 
 

 

------=_NextPart_000_0020_01C42180.F048F460--