You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Claus Straube <cl...@catify.com> on 2009/11/06 14:17:31 UTC

pojo producing and consuming

Hi all,

I want to produce a message from a pojo and send it via activemq to an 
other pojo. This works if I have something like that:

//bean
public class MyBean {
   
    @EndpointInject(uri="activemq:bar")
    protected ProducerTemplate     producer;
   
    @Produce(uri = "activemq:foo")
    protected MyListener         producer2;

    public void doSomething(String name){
         producer.sendBody("<hello>" + name + "</hello>");
    }
   
    public void doSomethingElse(String name){
        producer2.sayHello("<hello>" + name + "</hello>");
    }
   
    @Consume(uri = "activemq:bar")
    public void consumeSomething(String name){
        System.out.println(name);
    }
   
    @Consume(uri = "activemq:foo")
    public void consumeSomethingElse(String name){
        System.out.println(name);
    }
   
    public void setProducer2(MyListener producer2) {
        this.producer2 = producer2;
    }
       
}

//interface for producer proxy
public interface MyListener {
    String sayHello(String name);
}

If I call doSomething("bar") the result is "<hello>bar</hello>". But if 
I call doSomethingElse("bar")  - the method without the explicit 
ProducerTemplate - this exception will be thrown:

 java.lang.IllegalArgumentException: object is not an instance of 
declaring class
org.apache.camel.RuntimeCamelException: 
java.lang.IllegalArgumentException: object is not an instance of 
declaring class
    at 
org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1011)
    at 
org.apache.camel.component.bean.BeanInvocation.invoke(BeanInvocation.java:85)
    at 
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:95)
    at 
org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:83)
    at 
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543)
    at 
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482)
    at 
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
    at 
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
    at 
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
    at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
    at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974)
    at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876)
    at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.IllegalArgumentException: object is not an instance 
of declaring class
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at 
org.apache.camel.component.bean.BeanInvocation.invoke(BeanInvocation.java:80)
    ... 11 more
06.11.2009 14:12:45 
org.springframework.jms.listener.AbstractMessageListenerContainer 
handleListenerException
WARNUNG: Execution of JMS message listener failed
org.apache.camel.RuntimeCamelException: 
java.lang.IllegalArgumentException: object is not an instance of 
declaring class
    at 
org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1011)
    at 
org.apache.camel.component.bean.BeanInvocation.invoke(BeanInvocation.java:85)
    at 
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:95)
    at 
org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:83)
    at 
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543)
    at 
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482)
    at 
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
    at 
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
    at 
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
    at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
    at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974)
    at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876)
    at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.IllegalArgumentException: object is not an instance 
of declaring class
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at 
org.apache.camel.component.bean.BeanInvocation.invoke(BeanInvocation.java:80)
    ... 11 more

What I am doing wrong here?

Thanks in advance - Claus

Re: pojo producing and consuming

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

What version of Camel and Spring are you using?
Can you try with latest code from trunk?
And you can enable TRACE logging at org.apache.camel.component.bean
that may help to identify what could be wrong.


And can you create a small unit test demonstrating this issue and
create a JIRA ticket and add it there.


On Fri, Nov 6, 2009 at 2:17 PM, Claus Straube <cl...@catify.com> wrote:
> Hi all,
>
> I want to produce a message from a pojo and send it via activemq to an other
> pojo. This works if I have something like that:
>
> //bean
> public class MyBean {
>     @EndpointInject(uri="activemq:bar")
>   protected ProducerTemplate     producer;
>     @Produce(uri = "activemq:foo")
>   protected MyListener         producer2;
>
>   public void doSomething(String name){
>        producer.sendBody("<hello>" + name + "</hello>");
>   }
>     public void doSomethingElse(String name){
>       producer2.sayHello("<hello>" + name + "</hello>");
>   }
>     @Consume(uri = "activemq:bar")
>   public void consumeSomething(String name){
>       System.out.println(name);
>   }
>     @Consume(uri = "activemq:foo")
>   public void consumeSomethingElse(String name){
>       System.out.println(name);
>   }
>     public void setProducer2(MyListener producer2) {
>       this.producer2 = producer2;
>   }
>      }
>
> //interface for producer proxy
> public interface MyListener {
>   String sayHello(String name);
> }
>
> If I call doSomething("bar") the result is "<hello>bar</hello>". But if I
> call doSomethingElse("bar")  - the method without the explicit
> ProducerTemplate - this exception will be thrown:
>
> java.lang.IllegalArgumentException: object is not an instance of declaring
> class
> org.apache.camel.RuntimeCamelException: java.lang.IllegalArgumentException:
> object is not an instance of declaring class
>   at
> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1011)
>   at
> org.apache.camel.component.bean.BeanInvocation.invoke(BeanInvocation.java:85)
>   at
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:95)
>   at
> org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:83)
>   at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543)
>   at
> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482)
>   at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
>   at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
>   at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
>   at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
>   at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974)
>   at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876)
>   at java.lang.Thread.run(Thread.java:636)
> Caused by: java.lang.IllegalArgumentException: object is not an instance of
> declaring class
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:616)
>   at
> org.apache.camel.component.bean.BeanInvocation.invoke(BeanInvocation.java:80)
>   ... 11 more
> 06.11.2009 14:12:45
> org.springframework.jms.listener.AbstractMessageListenerContainer
> handleListenerException
> WARNUNG: Execution of JMS message listener failed
> org.apache.camel.RuntimeCamelException: java.lang.IllegalArgumentException:
> object is not an instance of declaring class
>   at
> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1011)
>   at
> org.apache.camel.component.bean.BeanInvocation.invoke(BeanInvocation.java:85)
>   at
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:95)
>   at
> org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:83)
>   at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543)
>   at
> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482)
>   at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
>   at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
>   at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
>   at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
>   at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974)
>   at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876)
>   at java.lang.Thread.run(Thread.java:636)
> Caused by: java.lang.IllegalArgumentException: object is not an instance of
> declaring class
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:616)
>   at
> org.apache.camel.component.bean.BeanInvocation.invoke(BeanInvocation.java:80)
>   ... 11 more
>
> What I am doing wrong here?
>
> Thanks in advance - Claus
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus