The Camel Route:
<camelContext id="camel" errorHandlerRef="myDeadLetterChannel"
xmlns="http://camel.apache.org/schema/spring" >
<route streamCache="true">
<from uri="jbi:service:http://plosoft.com/plc/routerManuTransmit" />
<when>
<xpath>//TransactionSubType/typeValue =
1000600002</xpath>
<pipeline>
<to
uri="jbi:endpoint:http://plosoft.com/plc/xsltModifyPartyWithCd/endpoint?mep=in-out"
/>
<to
uri="jbi:endpoint:http://plosoft.com/plc/jmsLogger/endpoint" />
<to
uri="jbi:endpoint:http://plosoft.com/plc/httpMEF/endpoint?mep=in-out" />
</pipeline>
</when>
<when>
<xpath>//TransactionSubType/typeValue=10006000240</xpath>
<resequence id="seq">
<xpath>//sequenceId/text()</xpath>
<convertBodyTo type="java.lang.String"></convertBodyTo>
<to uri="jbi:service:http://plosoft.com/plc/routerSplitter" />
<stream-config timeout="3000" capacity="3"/>
</resequence>
</when>
</route>
The MessageExchangeListener Implmentation is below
package com.plo.service.utilities;
import javax.annotation.Resource;
import javax.jbi.messaging.DeliveryChannel;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessagingException;
import javax.jbi.messaging.NormalizedMessage;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
import com.plo.framework.ihub.logger.ILogger;
import org.apache.servicemix.jbi.jaxp.SourceTransformer;
import org.apache.servicemix.jbi.jaxp.StringSource;
import org.apache.servicemix.jbi.listener.MessageExchangeListener;
import org.apache.servicemix.jbi.helper.MessageUtil;
//import org.apache.servicemix.jbi.util.MessageUtil;
public class MessageLogger implements MessageExchangeListener {
@Resource
private DeliveryChannel channel;
ILogger logger;
// @Override
public void onMessageExchange(MessageExchange exchange)
throws MessagingException {
System.out.println("IN LOGGER" + exchange.getMessage("in"));
NormalizedMessage msg = exchange.getMessage("in");
MessageUtil.enableContentRereadability(msg);
Source content = msg.getContent();
String body = "";
try {
body = (new SourceTransformer()).toString(content);
System.out.println("body is:::::"+body);
} catch (TransformerException e) {
System.out.println("*********exception0*********"+e.getMessage());
// TODO Auto-generated catch block
e.printStackTrace();
}
msg.setContent(content);
try {
String contentStr = new
SourceTransformer().contentToString(exchange.getMessage("in"));
logger.log((new SourceTransformer()).toDOMNode(new
StringSource(contentStr)));
} catch (Exception ex) {
System.out.println("*********exception1*********"+ex.getMessage());
ex.printStackTrace();
}
try {
exchange.setMessage(msg, "out");
// exchange.setStatus(ExchangeStatus.ACTIVE);
channel.send(exchange);
} catch (Exception ex) {
System.out.println("*********exception2*********"+ex.getMessage());
}
}
private String processXml(NormalizedMessage normalizedMessage)
throws MessagingException {
SourceTransformer sourceTransformer = new SourceTransformer();
String inMessage = "";
try {
inMessage =
sourceTransformer.contentToString(normalizedMessage);
} catch (Exception e) {
throw new MessagingException(e);
}
System.out.println("## In Message: " + inMessage);
return inMessage;
}
/**
* @return the logger
*/
public ILogger getLogger() {
return logger;
}
/**
* @param logger
* the logger to set
*/
public void setLogger(ILogger logger) {
this.logger = logger;
}
}
--
View this message in context:
http://servicemix.396122.n5.nabble.com/MessageExchangeListener-called-only-first-time-tp3306210p3307429.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.