Re: Declarative Exception Handling in ServiceMix

2006-10-05 Thread Ralf Wunsch


gnodet wrote:
> 
> 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 i have more than one ErrorHandlerComponent in the flow it should be
possible to use one ErrorHandler with different configurations for each
ErrorHandlerComponent (e.g. to specify different targets for different types
of failed messages). To provide this the configuration for the ErrorHandler
has been extracted and assembled in the ErrorHandlerConfig XBean.

* In my opinion the error handler hook and the handlers strategy should be
separated. I am involved in a migration project (from a commercial EAI
solution to open source). In the current EAI system an error handler is
always implemented. We want to migrate this solution that is based on a set
of database stored rules. I think there can be a lot of error handler
strategy implementations. One default handler can be an implementation as
discussed before.

* At this time i am using my own extension of the JBIContainer. This
extension registeres an ErrorEventListener as EventListener by default. I
have not found a way to configure event listeners in the deployment
descriptor. The ErrorHandler is a attribute of the extended container (the
getter/setter methods are using the ErrorEventListerners 'errorHandler'
attribute).

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



Declarative Exception Handling in ServiceMix

2006-10-05 Thread Ralf Wunsch


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

> 

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

> 

> 

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