On Tue, Mar 17, 2009 at 12:33, Amila Suriarachchi <amilasuriarach...@gmail.com> wrote: > > > On Tue, Mar 17, 2009 at 3:52 PM, Dobri Kitipov > <kdobrik.ax...@googlemail.com> wrote: >> >> Hi everyone, >> I want to direct your attention to how OUT_FAULT_FLOW is triggered in >> Axis2. >> >> 1) The short story >> >> When a request is received by the TransportListener (TL) (e.g. >> AxisServlet) then it invokes the AxisEngine (i.e. >> AxisEngine#receive(msgContext)). If there is a fault condition it is thrown >> by the engine and caught by the TransportListener. What happens is that the >> whole logic about triggering the OUT_FAULT_FLOW phases is placed into the >> TL, but not into the engine itself. >> You can refer to the AxisEngine#doPost() which in turn invokes its private >> processAxisFault() when there is a fault condition. > > I also got the sameĀ feelingĀ when I saw this code for the first time. > >> >> >> 2) The problem >> >> IMHO we can meet the following issue. If someone wants to create a custom >> TL then it should have the "processAxisFault" logic implemented into it. >> Since this is not well documented (I did not find a proper docu about this) >> it come out that the TL is missing this logic need and will not work >> properly. >> >> >> 3) The proposal >> >> a) I did a short research and did not find any obstacle to include the the >> "processAxisFault" logic into the engine itself (basically >> AxisEngine#sendFault(faultContext) should be called). IMHO doing so the >> architecture of Axis2 will be simplified and the fault logic will be >> decoupled from the TL implementation. Of course some HttpServletResponse >> processing should take place into the TL, but this is something more natural >> to do ( ;) better known and/or understanded/documented). > > Did you have a time to look at how JMS, SMTP and other transport have > implemented the Fault handling part. IMHO this code at least should go to > transport base module so that all the transports can use it.
There is some generic code in AbstractTransportListener#handleIncomingMessage. It is used by the JMS and mail transports and does the same as the code in AxisServlet (except for the decision logic on the HTTP status code). >> >> >> I think that this is worth having to be discussed. > > +1 > > thanks, > Amila. >> >> >> Please share your comments/opinions. >> >> Thank you in advance, >> Dobri > > > > -- > Amila Suriarachchi > WSO2 Inc. > blog: http://amilachinthaka.blogspot.com/ >