You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by alexcpn <al...@gmail.com> on 2010/09/16 14:03:19 UTC

Sending from a servicemix-bean to a file sender endpoint

Hi,
 My use case is like this; From a file poller I get the message to my
servicemix-bean; I do something with the message; After a count is reached I
want to send a consolidated message to a file sender. I tried something like
this and evidently the endpoint is not getting injected;

----------------------------------
xbean is like this

 <file:poller service="test:inmc_filepoller"
               endpoint="endpoint"
               targetService="test:inmc_aggregator_pipeline"
               file="d:\temp\_del\pollertest">
             
  </file:poller> 

-----------------------------------
public class MyBean implements MessageExchangeListener {

    @Resource
    private DeliveryChannel channel;
    
  
@ExchangeTarget(uri="endpoint:http://servicemix.apache.org/test/file_sender_getbulk/endpoint")
    private Destination target;
    

    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
			try {
				String body = (new SourceTransformer()).toString(content);
			} catch (TransformerException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			MessageExchange exchange2 =target.createInOnlyExchange();
			
			message.setContent(content);
			exchange2.setMessage(message, "in");
			channel.send(exchange2);
			
        }
    }

}

-----------------

ERROR - BeanComponent                  - Error processing exchange InOnly[
  id: ID:169.254.241.150-12b1a502016-14:150
  status: Active
  role: provider
  service: {http://servicemix.apache.org/test}aggregatorbean
  endpoint: bean
  in: Unable to display: java.io.IOException: Stream closed
]
java.lang.NullPointerException
        at
com.nsn.isuite.aggregator.MyBean.onMessageExchange(MyBean.java:40)
        at
org.apache.servicemix.bean.BeanEndpoint.onProviderExchange(BeanEndpoint.java:230)
        at
org.apache.servicemix.bean.BeanEndpoint.process(BeanEndpoint.java:217)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:581)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
        at
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:632)
        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:185)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)
WARN  - FileComponent                  - Message in file
d:\temp\_del\pollertest\test.txt could not be handled successfully: null

-- 
View this message in context: http://servicemix.396122.n5.nabble.com/Sending-from-a-servicemix-bean-to-a-file-sender-endpoint-tp2842166p2842166.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Re: Sending from a servicemix-bean to a file sender endpoint

Posted by Kévin Sailly <ke...@gmail.com>.
Hello,

It is looks like you did not create your target endpoint anywhere, then
complaining on NPE.

Where did you define the
endpoint:http://servicemix.apache.org/test/file_sender_getbulk/endpoint?

Regards,
Kévin
-- 
View this message in context: http://servicemix.396122.n5.nabble.com/Sending-from-a-servicemix-bean-to-a-file-sender-endpoint-tp2842166p2851597.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Re: Sending from a servicemix-bean to a file sender endpoint

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
Try to use sendSync() on the delivery channel in place of send().

Check the MEP of your message too.

Regards
JB

On 09/16/2010 02:03 PM, alexcpn wrote:
>
> Hi,
>   My use case is like this; From a file poller I get the message to my
> servicemix-bean; I do something with the message; After a count is reached I
> want to send a consolidated message to a file sender. I tried something like
> this and evidently the endpoint is not getting injected;
>
> ----------------------------------
> xbean is like this
>
>   <file:poller service="test:inmc_filepoller"
>                 endpoint="endpoint"
>                 targetService="test:inmc_aggregator_pipeline"
>                 file="d:\temp\_del\pollertest">
>
>    </file:poller>
>
> -----------------------------------
> public class MyBean implements MessageExchangeListener {
>
>      @Resource
>      private DeliveryChannel channel;
>
>
> @ExchangeTarget(uri="endpoint:http://servicemix.apache.org/test/file_sender_getbulk/endpoint")
>      private Destination target;
>
>
>      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
> 			try {
> 				String body = (new SourceTransformer()).toString(content);
> 			} catch (TransformerException e) {
> 				// TODO Auto-generated catch block
> 				e.printStackTrace();
> 			}
> 			
> 			MessageExchange exchange2 =target.createInOnlyExchange();
> 			
> 			message.setContent(content);
> 			exchange2.setMessage(message, "in");
> 			channel.send(exchange2);
> 			
>          }
>      }
>
> }
>
> -----------------
>
> ERROR - BeanComponent                  - Error processing exchange InOnly[
>    id: ID:169.254.241.150-12b1a502016-14:150
>    status: Active
>    role: provider
>    service: {http://servicemix.apache.org/test}aggregatorbean
>    endpoint: bean
>    in: Unable to display: java.io.IOException: Stream closed
> ]
> java.lang.NullPointerException
>          at
> com.nsn.isuite.aggregator.MyBean.onMessageExchange(MyBean.java:40)
>          at
> org.apache.servicemix.bean.BeanEndpoint.onProviderExchange(BeanEndpoint.java:230)
>          at
> org.apache.servicemix.bean.BeanEndpoint.process(BeanEndpoint.java:217)
>          at
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
>          at
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:581)
>          at
> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
>          at
> org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
>          at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:632)
>          at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:185)
>          at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
>          at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>          at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>          at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>          at java.lang.Thread.run(Thread.java:619)
> WARN  - FileComponent                  - Message in file
> d:\temp\_del\pollertest\test.txt could not be handled successfully: null
>

-- 
Jean-Baptiste Onofré
---------------------------------
  HomePage
http://www.nanthrax.net
---------------------------------
  Contacts
jbonofre@apache.org
jb@nanthrax.net
---------------------------------
  OpenSource
BuildProcess/AutoDeploy
http://buildprocess.sourceforge.net
Apache ServiceMix
http://servicemix.apache.org
-----------------------------------
PGP : 17D4F086