camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: using ProducerTemplate for JMS with Spring
Date Thu, 04 Jun 2009 09:59:32 GMT
Hi

You should see in your logs that Spring says something about bean XXX
is not eligble for post processors. When it says this then you know
you are in trouble. It should not say this for your POJO.



On Thu, Jun 4, 2009 at 11:58 AM, Claus Ibsen <claus.ibsen@gmail.com> wrote:
> On Thu, Jun 4, 2009 at 11:35 AM, stevenmaring <steve.maring@gmail.com> wrote:
>>
>> yeah ... I fought with my local Archiva repo for quite some time yesterday
>> because it didn't seem to be proxying the SNAPSHOT requests onto the Apache
>> snapshot repo, so I manually inserted the 2.0-SNAPSHOT releases into my
>> Archiva repo.
>>
>> well ... with regard to this issue I'm having I'm not sure whether to put my
>> fist through the screen or curl up in the corner and cry like a baby ...
>> I've been fighting this for 3 days (on little sleep) and I'm supposed to
>> demo something with a code review in 7 hours!!!!  I thought it would be cool
>> if I could show how I could make this company's life easier with Camel ...
>> it won't look good for Camel (in the eyes of my company) or ME (in this
>> economy as a contractor) if I can't get something working very soon.
>>
>> I've given up on trying to inject a handle to the ProducerTemplate into my
>> class since, given the CamelContext, I can easily create one
>> programmatically.  So now, my only concern is how to get a handle to the
>> CamelContext into my POJO.
>>
>> I can see the context start in the logs, but it seems no matter what I try I
>> cannot get my CamelContext property set.  It is always null.
>>
>> <camel:camelContext id="camel"/>
>>
>> <bean id="myBean" class="sample.MyBean">
>>   <property name="context" ref="camel"/>
>> </bean>
>>
>> where MyBean is also a jaxws webservice.  I've tried to instrument helper
>> classes instead of this pojo directly.  I've tried various versions of Camel
>> and every possible combination of namespaces I can think of.  I suppose next
>> I will try creating a CamelManager class that starts the context manually
>> and builds the routes, remove all refs to camel from my spring config, and
>> inject my pojo with that. ... oh, and pray like hell!   I know the powers
>> that be are not going to be too thrilled with a hack though.
>
> Yeah you can always do a CamelContext context = new DefaultCamelContext();
> For instance you can avoid using the Spring Camel DSL and just use Java DSL.
>
> For instance this tutorial stedily adds Camel to an existing solution.
> http://camel.apache.org/tutorial-example-reportincident-part2.html
>
>
>
> Ahhhh I guess Spring IoC is all bean post processors. So if you POJO
> contains some 3rd part annotations such as @WebService or the likes
> then Spring will not do all the other IoC stuff regardless what you
> do.
>
> Try for starters to remove any annotation in your POJO and see if you
> get the context set.
> Then add one annotation and see that is *not* set. Then you know the problem.
>
> If you have the time and want to you could create a small project (a
> zip file) that I can take a look at.
>
>
>>
>> I'm sooooo frustrated right now = (
>>
>>
>>
>> Claus Ibsen-2 wrote:
>>>
>>> On Thu, Jun 4, 2009 at 5:26 AM, stevenmaring <steve.maring@gmail.com>
>>> wrote:
>>>>
>>>> Clause,
>>>>
>>>> I just tried the 2.0-SNAPSHOT released earlier today and got the same
>>>> thing.
>>> There is something wrong with the Apache snapshot maven repo. Its
>>> maven metadata is wrong.
>>> It wrongly says the last version is a version from 9th april.
>>>
>>> You can get a fresh version by downloading the .jar yourself and
>>> install to your local .m2 repo.
>>> Or build the source and install locally.
>>>
>>>
>>>>
>>>> May I ask for a specific example of what you mean by "use regular setter
>>>> IoC
>>>> using spring bean property to set the camel producer template"?
>>>
>>> Yes its using the spring bean XML wiring
>>>
>>> <bean id="foo" class=...>
>>>    <property name="myprop" ref="bar"/>
>>> </bean>
>>>
>>> <bean id="bar" class=.../>
>>>
>>> In the camel context you give the <camelTemplate> and id so its
>>> <camelTemplate id="template"/>
>>>
>>> And then ref to this id from your POJO class.
>>>
>>>
>>>
>>>>
>>>> Thanks,
>>>> Steve Maring
>>>>
>>>>
>>>> Claus Ibsen-2 wrote:
>>>>>
>>>>> Hi
>>>>>
>>>>> I think you are stuck by the bug CAMEL-1663 that causes dependency
>>>>> injection with annotations to not work if you mix annotations from
>>>>> Camel with others.
>>>>> So use regular setter IoC using spring bean property to set the camel
>>>>> producer template.
>>>>>
>>>>> You can try the 2.0m2 when it comes out with the fix, or the -SNAPSHOT
>>>>> version when its build by this time tomorrow.
>>>>>
>>>>> Details at the download page if using maven to get the SNAPSHOT
>>>>> http://camel.apache.org/download.html
>>>>>
>>>>>
>>>>> On Wed, Jun 3, 2009 at 12:53 PM, stevenmaring <steve.maring@gmail.com>
>>>>> wrote:
>>>>>>
>>>>>> I tried putting the template inside the camelContext but it didn't
seem
>>>>>> to
>>>>>> help.  I've now read thru a good chunk of the manual, which certainly
>>>>>> did
>>>>>> wonders for my understanding of what is going on, but I'm still
>>>>>> scratching
>>>>>> my head over this NullpointerException.  The logs don't seem to
be
>>>>>> yelling
>>>>>> at me about anything ...
>>>>>>
>>>>>> 06:49:01,752  INFO ContextLoader:189 - Root WebApplicationContext:
>>>>>> initialization started
>>>>>> 06:49:01,862  INFO XmlWebApplicationContext:411 - Refreshing
>>>>>> org.springframework.web.context.support.XmlWebApplicationContext@7eb6e2:
>>>>>> display name [Root WebApplicationContext]; startup date [Wed Jun
03
>>>>>> 06:49:01
>>>>>> EDT 2009]; root of context hierarchy
>>>>>> 06:49:02,018  INFO XmlBeanDefinitionReader:323 - Loading XML bean
>>>>>> definitions from ServletContext resource
>>>>>> [/WEB-INF/applicationContext.xml]
>>>>>> 06:49:02,471  INFO XmlBeanDefinitionReader:323 - Loading XML bean
>>>>>> definitions from class path resource [META-INF/cxf/cxf.xml]
>>>>>> 06:49:02,596  INFO XmlBeanDefinitionReader:323 - Loading XML bean
>>>>>> definitions from class path resource
>>>>>> [META-INF/cxf/cxf-extension-soap.xml]
>>>>>> 06:49:02,659  INFO XmlBeanDefinitionReader:323 - Loading XML bean
>>>>>> definitions from class path resource [META-INF/cxf/cxf-servlet.xml]
>>>>>> 06:49:04,659  INFO XmlWebApplicationContext:426 - Bean factory for
>>>>>> application context
>>>>>> [org.springframework.web.context.support.XmlWebApplicationContext@7eb6e2]:
>>>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory@baf589
>>>>>> 06:49:05,034  INFO XmlWebApplicationContext:1196 - Bean 'cxf' is
not
>>>>>> eligible for getting processed by all BeanPostProcessors (for example:
>>>>>> not
>>>>>> eligible for auto-proxying)
>>>>>> 06:49:05,112  INFO DefaultCamelContext:120 - JMX enabled. Using
>>>>>> InstrumentationLifecycleStrategy.
>>>>>> 06:49:05,143 DEBUG CamelContextFactoryBean:282 - Found JAXB created
>>>>>> routes:
>>>>>> []
>>>>>> 06:49:05,159  INFO XmlWebApplicationContext:1196 - Bean 'camel'
is not
>>>>>> eligible for getting processed by all BeanPostProcessors (for example:
>>>>>> not
>>>>>> eligible for auto-proxying)
>>>>>> 06:49:05,159  INFO XmlWebApplicationContext:1196 - Bean 'camel'
is not
>>>>>> eligible for getting processed by all BeanPostProcessors (for example:
>>>>>> not
>>>>>> eligible for auto-proxying)
>>>>>> 06:49:05,206  INFO DefaultListableBeanFactory:414 - Pre-instantiating
>>>>>> singletons in
>>>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory@baf589:
>>>>>> defining beans
>>>>>> [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.transport.servlet.ServletTransportFactory,camelTemplate,camel:beanPostProcessor,camel,imq,voiceGenerator,imqConnectionFactory,voiceGeneratorWS];
>>>>>> root of factory hierarchy
>>>>>> 06:49:07,424 DEBUG SpringCamelContext:107 - Publishing spring-event:
>>>>>> org.springframework.context.event.ContextRefreshedEvent[source=org.springframework.web.context.support.XmlWebApplicationContext@7eb6e2:
>>>>>> display name [Root WebApplicationContext]; startup date [Wed Jun
03
>>>>>> 06:49:01
>>>>>> EDT 2009]; root of context hierarchy]
>>>>>> 06:49:07,424 DEBUG SpringCamelContext:94 - Starting the CamelContext
>>>>>> now
>>>>>> that the ApplicationContext has started
>>>>>> 06:49:07,424  INFO DefaultCamelContext:729 - Apache Camel 2.0-M1
>>>>>> (CamelContext:camel) is starting
>>>>>> 06:49:07,440 DEBUG DefaultInstrumentationAgent:183 - Starting JMX
agent
>>>>>> on
>>>>>> server: com.sun.jmx.mbeanserver.JmxMBeanServer@e7bb91
>>>>>> 06:49:07,534 DEBUG DefaultInstrumentationAgent:247 - Registered MBean
>>>>>> with
>>>>>> objectname: org.apache.camel:context=smaring-dt/camel,name=context
>>>>>> 06:49:07,549  INFO DefaultCamelContext:771 - Apache Camel 2.0-M1
>>>>>> (CamelContext:camel) started
>>>>>> 06:49:07,565 DEBUG DefaultComponent:77 - Creating endpoint
>>>>>> uri=[spring-event:default], path=[default], parameters=[{}]
>>>>>> 06:49:07,565 DEBUG DefaultCamelContext:362 - spring-event:default
>>>>>> converted
>>>>>> to endpoint: Endpoint[spring-event:default] by component:
>>>>>> org.apache.camel.component.event.EventComponent@1f4cf6f
>>>>>> 06:49:07,581 DEBUG DefaultInstrumentationAgent:247 - Registered MBean
>>>>>> with
>>>>>> objectname:
>>>>>> org.apache.camel:context=smaring-dt/camel,type=endpoints,name="spring-event:default\?id=0x20a20c46"
>>>>>> 06:49:07,706  INFO ContextLoader:209 - Root WebApplicationContext:
>>>>>> initialization completed in 5938 ms
>>>>>> 06:49:07,737  INFO BusApplicationContext:411 - Refreshing
>>>>>> org.apache.cxf.bus.spring.BusApplicationContext@1a1b2f: display name
>>>>>> [org.apache.cxf.bus.spring.BusApplicationContext@1a1b2f]; startup
date
>>>>>> [Wed
>>>>>> Jun 03 06:49:07 EDT 2009]; parent:
>>>>>> org.springframework.web.context.support.XmlWebApplicationContext@7eb6e2
>>>>>> 06:49:07,815  INFO BusApplicationContext:426 - Bean factory for
>>>>>> application
>>>>>> context [org.apache.cxf.bus.spring.BusApplicationContext@1a1b2f]:
>>>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory@6f4652
>>>>>> 06:49:07,893  INFO DefaultListableBeanFactory:414 - Pre-instantiating
>>>>>> singletons in
>>>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory@6f4652:
>>>>>> defining beans []; parent:
>>>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory@baf589
>>>>>> 06:49:07,909 DEBUG SpringCamelContext:107 - Publishing spring-event:
>>>>>> org.springframework.context.event.ContextRefreshedEvent[source=org.apache.cxf.bus.spring.BusApplicationContext@1a1b2f:
>>>>>> display name [org.apache.cxf.bus.spring.BusApplicationContext@1a1b2f];
>>>>>> startup date [Wed Jun 03 06:49:07 EDT 2009]; parent:
>>>>>> org.springframework.web.context.support.XmlWebApplicationContext@7eb6e2]
>>>>>> 06:49:07,909 DEBUG SpringCamelContext:94 - Starting the CamelContext
>>>>>> now
>>>>>> that the ApplicationContext has started
>>>>>>
>>>>>>
>>>>>> I'm going to try a simple HelloWorld sort of project getting a
>>>>>> reference
>>>>>> to
>>>>>> the ProducerTemplate ala ...
>>>>>>
>>>>>> mvn archetype:generate                   \
>>>>>>  -DarchetypeGroupId=org.apache.camel.archetypes  \
>>>>>>  -DarchetypeArtifactId=camel-archetype-spring   \
>>>>>>  -DarchetypeVersion=2.0-M1             \
>>>>>>  -DgroupId=my.sample           \
>>>>>>  -DartifactId=HelloCamel
>>>>>>
>>>>>> hopefully I will either learn something or not get the
>>>>>> NullpointerException
>>>>>> on my reference.
>>>>>>
>>>>>> I'll let ya'll know how it goes ... thank you much for your thoughts
so
>>>>>> far
>>>>>>
>>>>>> -Steve Maring
>>>>>>
>>>>>>
>>>>>> Martin Gilday wrote:
>>>>>>>
>>>>>>> Sorry if this appears twice, my first attempt got rejected as
spam :)
>>>>>>>
>>>>>>> Claus,
>>>>>>> Do you have to put the template inside the context?  Is this
a 2.0
>>>>>>> change?  I've always placed it outside.  As you can't define
a context
>>>>>>> ref it seemed effectively singleton and so didn't matter where
you
>>>>>>> created it.  This is also how I wrote it in the Camel Spring
tutorial
>>>>>>> on
>>>>>>> the wiki.  If it is considereed incorrect then I can update
it.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Martin
>>>>>>>
>>>>>>>
>>>>>>> ----- Original message -----
>>>>>>> From: "Claus Ibsen" <claus.ibsen@gmail.com>
>>>>>>> To: users@camel.apache.org
>>>>>>> Date: Wed, 3 Jun 2009 06:22:30 +0200
>>>>>>> Subject: Re: using ProducerTemplate for JMS with Spring
>>>>>>>
>>>>>>>
>>>>>>> Hi welcome on board the Camel ride.
>>>>>>>
>>>>>>> You almost got it. The camel:template XML tag should be inside
the
>>>>>>> camel:context XML tag. So it should be:
>>>>>>>
>>>>>>>         <camel:camelContext id="camel">
>>>>>>>             <camel:template id="camelTemplate"/>
>>>>>>>         </camel:camelContext>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> View this message in context:
>>>>>> http://www.nabble.com/using-ProducerTemplate-for-JMS-with-Spring-tp23840855p23849357.html
>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Claus Ibsen
>>>>> Apache Camel Committer
>>>>>
>>>>> Open Source Integration: http://fusesource.com
>>>>> Blog: http://davsclaus.blogspot.com/
>>>>> Twitter: http://twitter.com/davsclaus
>>>>>
>>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/using-ProducerTemplate-for-JMS-with-Spring-tp23840855p23863267.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Claus Ibsen
>>> Apache Camel Committer
>>>
>>> Open Source Integration: http://fusesource.com
>>> Blog: http://davsclaus.blogspot.com/
>>> Twitter: http://twitter.com/davsclaus
>>>
>>>
>>
>> --
>> View this message in context: http://www.nabble.com/using-ProducerTemplate-for-JMS-with-Spring-tp23840855p23866699.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Mime
View raw message