Sounds good. Nice work !

A few questions:
* How are the errorHandler and errorHandlerConfig related ?
* If I want to handle a given exception specifically, i guess
   I need to implement a custom errorHandler, right ?
* how does the errorHandler plug into the jbi container ?

If you want to donate this code, feel free to raise a JIRA issue
and attach the code.  I think it would be a nice addition.


On 10/5/06, Ralf Wunsch <[EMAIL PROTECTED]> wrote:


Ralf Wunsch wrote:
>
>

> We are starting a new EAI project. At this time ServiceMix is our choice
> for the implementation plattform. We have strong requirements for
> monitoring and control issues. At this one aspect is the handling of
> unexpected errors. For this reason i have implemented the following error
> handler solution.
>

>

>

> The error handling solution delegates errors or faults detected in
> analysis of the MessageExchange objects to an ErrorHandler implemented as
> XBean. This bean is used by an ErrorHandlerComponent (a JBI component
> embedded in the flow) or by the JBIContainer (the centralized way) or
> both.
>

>
http://www.nabble.com/file/290/error-handler-embedding.png

>

> The ErrorHandler can cancel transactions and stop the container or the
> source component (all cofigurable). Furthermore it's possible to route the
> error or fault messages and the actuating message to a configurable
> target. In this case ist possible to embed one or more
> ErrorHandlerComponents into the flow.
>

>
http://www.nabble.com/file/291/error-handler-flow.png

>

> Such an ambedded ErrorHandlerComponent borrowed by the EIP WireTap ensures
> that the rerouted message from the source will be in a well know format
> (the centralised approach can't accomplish this). The embedded and the
> centralized approach can be used in combination. For synchronization the
> ErrorHandlerComponent sets a Property on the outgoing MessageExchange and
> the ErrorEventListener does nothing as long as this property can be found
> in the MessageEchange which signals a fault or an error.
>

>

> A sample configuration...
>

>

> &lt;bean id="errorHandler"
>       class="de.eval.eai.error.DefaultErrorHandler"&gt;
> &lt;/bean&gt;
> ...
> &lt;bean id="errorHandlerConfig"
>       class="de.eval.eai.error.ErrorHandlerConfig"&gt;
>   &lt;property name="shutdownOnFault" value="true" /&gt;
>   &lt;property name="rollbackOnFault" value="false" /&gt;
> &lt;/bean&gt;
> ...
> &lt;test:container id="jbi"
>                useMBeanServer="true"
>                createMBeanServer="false"
>                dumpStats="true"
>                statsInterval="10"
>                errorHandler="#errorHandler"
>                errorHandlerConfig="#errorHandlerConfig"&gt;
> ...
>   &lt;sm:activationSpecs&gt;
> ...
>     &lt;sm:activationSpec componentName="errorHandler"&gt;
>       &lt;sm:component&gt;
>         &lt;eai:component&gt;
>           &lt;eai:endpoints&gt;
>             &lt;eai:errorHandler service="errorHandler"
> endpoint="endpoint"&gt;
>               &lt;eai:target&gt;
>                 &lt;eai:exchange-target service="transformer" /&gt;
>               &lt;/eai:target&gt;
>               &lt;eai:disqualifyTarget&gt;
>                 &lt;eai:exchange-target service="failedQueue" /&gt;
>               &lt;/eai:disqualifyTarget&gt;
>               &lt;eai:errorTarget&gt;
>                 &lt;eai:exchange-target service="errorQueue" /&gt;
>               &lt;/eai:errorTarget&gt;
>               &lt;eai:faultTarget&gt;
>                 &lt;eai:exchange-target service="faultQueue" /&gt;
>               &lt;/eai:faultTarget&gt;
>               &lt;property name="shutdownOnFault" value="true" /&gt;
>               &lt;property name="rollbackOnFault" value="false" /&gt;
>             &lt;/eai:errorHandler&gt;
>           &lt;/eai:endpoints&gt;
>         &lt;/eai:component&gt;
>       &lt;/sm:component&gt;
>     &lt;/sm:activationSpec&gt;
> ...

>

>

> Two questions:
>

>

> Ist this a accurate ServieMix way (in accordance with the ideas of
> ServiceMix)?
>

>

> Is it on behalf of the project or the communitiy to reuse this solution?
>

>

> Thanks,

> Ralf Wunsch
>

>

--
View this message in context: 
http://www.nabble.com/Declarative-Exception-Handling-in-ServiceMix-tf2161788.html#a6658179
Sent from the ServiceMix - Dev mailing list archive at Nabble.com.




--
Cheers,
Guillaume Nodet

Reply via email to