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/
>

Reply via email to