I figured out that executing
searchUsersMessageExchange.setMessage(searchMessage, "in");
causes the following error:
Caused by: java.lang.IllegalStateException: component is not owner
at
org.apache.servicemix.jbi.messaging.MessageExchangeImpl.setMessage(MessageExchangeImpl.java:338)
at
mv40000.seminar.servicemix.SearchBean.myExchangeMethod(SearchBean.java:80)
... 18 more
Any ideas why I'm getting this error ?
m.v. wrote:
>
> I have two service units - two servicemix beans. I am trying to send a
> message from one su to another. The code is shown below:
>
> I have created a message exchange factory in a postConstruct method
> (init()). When this bean receives a message it should send another message
> to the other bean, but when i try to set content (or comment out that line
> and just try to send message) I get an exception thrown. I'm obviously
> doing something wrong... Any help would be greatly appreciated.
>
> private MessageExchangeFactory messageExchangeFacory;
>
> private MessageExchange searchUsersMessageExchange;
>
> @Resource
> private ComponentContext context;
>
> @Resource
> private DeliveryChannel channel;
>
> @Operation(name = "search")
> public void myExchangeMethod(MessageExchange messageExchange) throws
> MessagingException {
> if (messageExchange.getStatus() == ExchangeStatus.ACTIVE) {
> messageExchange.getMessage("in").setContent(new StringSource("No
> users found"));
> //String searchTerm =
> (String)((messageExchange.getMessage("in")).getProperty("searchTerm"));
> //Create message exchange for searching a store
> NormalizedMessage searchMessage =
> searchUsersMessageExchange.createMessage();
> searchMessage.setContent(new StringSource("testing"));
> searchUsersMessageExchange.setMessage(searchMessage, "in");
> channel.send(searchUsersMessageExchange);
>
>
> NormalizedMessage message = messageExchange.getMessage("in");
> //StringSource content = (StringSource)message.getContent();
>
> message.setContent(new StringSource("No Users found"));
> messageExchange.setMessage(message, "out");
> channel.send(messageExchange);
> }
>
> //log.info("myExchangeMethod() received exchange: " +
> messageExchange);
> }
>
>
> /**
> * @return the searchRequest
> */
> public Future<NormalizedMessage> getRequest1() {
> return searchRequest;
> }
>
> @PostConstruct
> public void init() {
> if (searchService == null || context == null || channel ==
> null) {
> throw new IllegalStateException("Bean not initialized");
> }
> this.messageExchangeFacory = channel.createExchangeFactory();
> try {
> searchUsersMessageExchange =
> messageExchangeFacory.createExchange(new
> QName("endpoint:urn:mv40000:seminar:servicemix:store:endpoint"), new
> QName("searchUsers"));
> } catch (MessagingException e) {
> e.printStackTrace();
> }
> }
>
> @PreDestroy
> public void destroy() {
> }
>
> @Callback(condition="this.searchUsersMessageExchange.done")
> public NormalizedMessage answer() throws InterruptedException,
> ExecutionException {
> System.out.println("answer from searchREquest");
> //NormalizedMessage answer1 = searchRequest.get();
> return null;
> }
>
--
View this message in context:
http://www.nabble.com/Problem-with-sending-message-from-one-su-to-another-tp19612610p19616272.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.