Hi Charles,
Please check out my test case here[1]
[1]http://svn.apache.org/viewvc?rev=959163&view=rev
Willem
----------------------------------
Apache Camel, Apache CXF committer
Open SOA http://www.fusesource.com
Blog http://willemjiang.blogspot.com
Tiwtter http://twitter.com/willemjiang
Charles Moulliard wrote:
Hi Willem,
I have tried what you proposes but get a NPE when I try to use camel
ProducerTemplate in the class
@Autowired
private ProducerTemplate producerTemplate;
<!-- add route in camel context -->
<camelContext id="camelAlarmManager"
xmlns="http://camel.apache.org/schema/spring">
<template id="camelTemplate" />
<routeBuilder ref="alarmManager" />
</camelContext>
Any idea is welcome ?
KR,
Charles Moulliard
Senior Enterprise Architect (J2EE, .NET, SOA)
Apache Camel - ServiceMix Committer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Blog : http://cmoulliard.blogspot.com | Twitter : http://twitter.com/cmoulliard
Linkedin : http://www.linkedin.com/in/charlesmoulliard | Skype: cmoulliard
On Tue, Jun 29, 2010 at 3:53 PM, Willem Jiang <[email protected]> wrote:
Charles Moulliard wrote:
There is no @Endpoint(ref="camelTemplate") annotation.
If I use the following syntax --> @Produce(context="camelTemplate"), it
works
The CamelPostProcessor will not handle this injection, as they are using
different camel context, so you don't get the exception.
But the the template is not injected, and you can't use it to send message.
Willem
----------------------------------
Apache Camel, Apache CXF committer
Open SOA http://www.fusesource.com
Blog http://willemjiang.blogspot.com
Tiwtter http://twitter.com/willemjiang
KR,
Charles Moulliard
Senior Enterprise Architect (J2EE, .NET, SOA)
Apache Camel - ServiceMix Committer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Blog : http://cmoulliard.blogspot.com | Twitter :
http://twitter.com/cmoulliard
Linkedin : http://www.linkedin.com/in/charlesmoulliard | Skype: cmoulliard
On Tue, Jun 29, 2010 at 3:21 PM, Willem Jiang <[email protected]>
wrote:
Charles Moulliard wrote:
If I try to use annotation in the class requesting the Producer
@Produce(ref="camelTemplate")
private ProducerTemplate producerTemplate;
and
Camel Spring XML file
<!-- add route in camel context -->
<camelContext id="camelAlarmManager"
xmlns="http://camel.apache.org/schema/spring">
<template id="camelTemplate" />
</camelContext>
I get the following error :
Caused by: java.lang.IllegalArgumentException: registry entry called
camelTemplate of type org.apache.camel.Endpoint must be specified
at
org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:244)
at
org.apache.camel.util.CamelContextHelper.mandatoryLookup(CamelContextHelper.java:123)
at
org.apache.camel.util.CamelContextHelper.getEndpointInjection(CamelContextHelper.java:138)
at
org.apache.camel.impl.CamelPostProcessorHelper.getEndpointInjection(CamelPostProcessorHelper.java:125)
at
org.apache.camel.impl.CamelPostProcessorHelper.createInjectionProducerTemplate(CamelPostProcessorHelper.java:167)
at
org.apache.camel.impl.CamelPostProcessorHelper.getInjectionValue(CamelPostProcessorHelper.java:134)
at
org.apache.camel.spring.CamelBeanPostProcessor.injectField(CamelBeanPostProcessor.java:215)
What is wrong ?
Can you check if your annotation has other kind of annotation like
@Endpoint(ref="camelTemplate")?
From the stack trace it looks like your class plan to inject a endpoint
with
the name of camelTemplate.
Willem
KR,
Charles Moulliard
Senior Enterprise Architect (J2EE, .NET, SOA)
Apache Camel - ServiceMix Committer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Blog : http://cmoulliard.blogspot.com | Twitter :
http://twitter.com/cmoulliard
Linkedin : http://www.linkedin.com/in/charlesmoulliard | Skype:
cmoulliard
On Tue, Jun 29, 2010 at 2:36 PM, Willem Jiang <[email protected]>
wrote:
I think we could export the CamelContext as the service, then use
camelContext.getRegistry().lookup("producerTemplate") to get the
template.
Or we could think about export the producerTemplate as a service, than
other
bundle has a way to access certain camel context.
Willem
----------------------------------
Apache Camel, Apache CXF committer
Open SOA http://www.fusesource.com
Blog http://willemjiang.blogspot.com
Tiwtter http://twitter.com/willemjiang
Christian Schneider wrote:
Probably not directly but we could publish a service that serves the
context. I am not sure if serving the context is a good idea though as
it
promotes an
ugly style. It is like directly accessing a spring context. We should
give
this some thoughts before starting. But Charles could already do this
in
his
project for the mean
time.
Greetings
Christian
Am 29.06.2010 08:00, schrieb Charles Moulliard:
Can we export a camelContext (from one bundle) by exposing it as a
OSGI service using<osgi:reference> ?
On Tue, Jun 29, 2010 at 1:56 AM, Willem Jiang<[email protected]>
wrote:
Hi Charles,
Both solutions are OK if you can get the SpringCamelContext for your
bundle
utility.
And the option 1 is easy to understand :)
Willem
----------------------------------
Apache Camel, Apache CXF committer
Open SOA http://www.fusesource.com
Blog http://willemjiang.blogspot.com
Tiwtter http://twitter.com/willemjiang
Charles Moulliard wrote:
Hi,
I have two bundles, one playing the role of an utility package and
another where the camel context instantiates a Camel
ProducerTemplate.
What is the best way to retrieve the ProducerTemplate from my
bundle
utility :
1) using SpringCamelContext --> SpringCamelContext camel =
(SpringCamelContext) ac.getBean("producerTemplate");
2) using @ProducerTemplate + ref to the bean object -->
@ProducerTemplate(ref="producerTemplate");
3) ...
Kind regards,
Charles Moulliard
Senior Enterprise Architect (J2EE, .NET, SOA)
Apache Camel - ServiceMix Committer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Blog : http://cmoulliard.blogspot.com | Twitter :
http://twitter.com/cmoulliard
Linkedin : http://www.linkedin.com/in/charlesmoulliard | Skype:
cmoulliard