Hi Sanky,
If you need to create the POJO, you can use the servicemix-bean
component. If you have existing POJO, you can expose it using the
servicemix-cxf-se component.
For example, you can create a service that use a POJO method like this :
import org.apache.servicemix.jbi.listener.MessageExchangeListener;
import org.apache.servicemix.jbi.util.MessageUtil;
import org.apache.servicemix.jbi.jaxp.SourceTransformer;
import javax.annotation.Resource;
import javax.jbi.messaging.DeliveryChannel;
import javax.jbi.messaging.ExchangeStatus;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessagingException;
import javax.jbi.messaging.NormalizedMessage;
import javax.xml.transform.Source;
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();
//process content according to your logic
//e.g. to access the message body as a String use
String body = (new SourceTransformer()).toString(content);
body = MyPOJO.transform(body);
message.setContent(new StringSource(body));
exchange.setMessage(message, "out");
channel.send(exchange);
}
}
}
This POJO is the listener one: it receives a message, extracts the
content and send out (if the MEP InOut is used).
You can deploy it with the following xbean.xml:
<bean:endpoint service="MyService" endpoint="listener" bean="#myBean"/>
<bean id="myBean" class="com.my.package.Bean"/>
For the poller, you can use servicemix-quartz component to call a bean
that trigger the message sending. You can define your own
servicemix-quartz marshaler to define the message content. After you
deploy it using a xbean.xml like this:
<quartz:endpoint service="MyService endpoint="provider"
targetService="MyService" endpoint="listener">
<quartz:jobDetail>
<quartz:jobDetail>
<quartz:jobDataAsMap>
<quartz:property key="xml"><![CDATA[
<hello>world</hello>
]]></quartz:property>
</quartz:jobDataAsMap>
</quartz:jobDetail>
</quartz:jobDetail>
<quartz:triggers>
<quartz:simple repeatCount="0" repeatInterval="1000" />
<quartz:cron cronExpression="0 * 1 * * ?" />
</quartz:triggers>
<quartz:marshaler>
<bean class="org.apache.servicemix.quartz.CustomMarshaler" />
</quartz:marshaler>
</quartz:endpoint>
Regards
JB
sanky wrote:
> Hi,All...
>
> I want to exchange message from one POJO(sender) to another(receiver).
> I am looking for-
> 1. how to configure POJO's for this, may be in the form of xbean.xml..
> Any example on this will be useful..
> I have also gone through the link--
> http://servicemix.apache.org/pojo-support.html
> But dont understand everything. Please help..
>
> 2. Also help me to understand how sender will be triggered to send
message
> once sender and receiver service assemblies (SA) are deployed
>
>
> Thanks,
> Sanket