Oops, the code should be
example of this code is
import org.apache.servicemix.jbi.listener.MessageExchangeListener;
import org.apache.servicemix.jbi.util.MessageUtil;
import javax.annotation.Resource;
import javax.jbi.messaging.DeliveryChannel;
import javax.jbi.messaging.ExchangeStatus;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessagingException;
public class ListenerBean implements MessageExchangeListener {
@Resource
private DeliveryChannel channel;
public void onMessageExchange(MessageExchange exchange) throws
MessagingException {
if (exchange.getStatus() == ExchangeStatus.ERROR) {
NormalizedMessage message = exchange.getMessage("in");
Source content = message.getContent();
String body = (new SourceTransformer()).toString(content);
// ***** Write the message to a directory ****
channel.send(exchange);
}
}
}
Ashwin Karpe wrote:
>
> Hi,
>
> The way to do this is the following.
>
> - Create a servicemix-bean that exclusively does error handling (i.e
> check the exchange for Exchange status to be Error/Fault) and writes the
> message to a specific directory. The Exception handling bean will
> typically be a pass through and only kkick in when an exceptionis received
> in the Message Exchange
> - Introduce this bean between the File SU and the Transformer by
> changing the target Service in the File SU and the Exception Handling Bean
> File SU --> Exception Processing Bean --> Transformer
>
> An example of this code is
>
> import org.apache.servicemix.jbi.listener.MessageExchangeListener;
> import org.apache.servicemix.jbi.util.MessageUtil;
>
> import javax.annotation.Resource;
> import javax.jbi.messaging.DeliveryChannel;
> import javax.jbi.messaging.ExchangeStatus;
> import javax.jbi.messaging.MessageExchange;
> import javax.jbi.messaging.MessagingException;
>
> public class ListenerBean implements MessageExchangeListener {
>
> @Resource
> private DeliveryChannel channel;
>
> public void onMessageExchange(MessageExchange exchange) throws
> MessagingException {
> if (exchange.getStatus() == ExchangeStatus.ACTIVE) {
> NormalizedMessage message = exchange.getMessage("in");
> Source content = message.getContent();
> String body = (new SourceTransformer()).toString(content);
>
> // ***** Write the message to a directory ****
> channel.send(exchange);
>
> }
> }
>
> }
>
> Hope this helps.
>
> Cheers,
>
> Ashwin...
>
>
> smo001 wrote:
>>
>>
>> Hi all,
>>
>> i'v got some questions about the exchange status which is used in the
>> Servicemix ESB.
>> i'd like to use it to get a user defined handling if an error occurs. My
>> projekt is a file - unit which sends the file into a pipeline. the
>> pipeline sends it to a xslt - transformer unit which returns the
>> transformed message back to the pipeline.
>>
>> on Success: the message will be received to a jms unit which writes the
>> message to a messagequeue
>>
>> on Error: the file shoud be moved to an other directory.
>>
>> I think, an error could only occur in the tranformation unit if the xml
>> document is not valid. So the component receives the exchange status =
>> error back to the pipeline.
>>
>> The Filepoller only deletes the file if it got the status done (is it
>> write?) . Therefore i think it should be possible to add for example a
>> bean with an own class to copy the file to an other directory, but i
>> don't know how to implement the bean in the file component.
>>
>> Has anybody en idea how to realize it?
>>
>> My filepoller is a simple one like this:
>> <beans xmlns:f="http://servicemix.apache.org/file/1.0"
>> xmlns:b="http://servicemix.apache.org/OpenTransToPdf/bridge">
>>
>> <f:poller
>> service="b:FilePoller"
>> endpoint="FilePoller"
>> file="file:///C:\Servicemix\inbox"
>> targetService="b:Pipeline"
>> period="30000"
>> recursive="true"
>> autoCreateDirectory="true">
>>
>> <property name="filter">
>> <bean
>> class="org.apache.commons.io.filefilter.WildcardFilter">
>> <constructor-arg value="*.xml" />
>> </bean>
>> </property>
>>
>> <property name="marshaler">
>> <bean
>>
>> class="org.apache.servicemix.components.util.DefaultFileMarshaler">
>> </bean>
>> </property>
>>
>> </f:poller>
>>
>> Thanks for your Help
>> Regards Stefan
>>
>
>
-----
---
Ashwin Karpe, Principal Consultant, PS - Opensource Center of Competence
Progress Software Corporation
14 Oak Park Drive
Bedford, MA 01730
---
+1-972-304-9084 (Office)
+1-972-971-1700 (Mobile)
----
Blog: http://opensourceknowledge.blogspot.com/
--
View this message in context:
http://www.nabble.com/Exchange-Status-to-handle-Errors-tp21328296p21330084.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.