Thanks Willem - will take a look. BTW, do you have any hints as to whether it's possible to reconfigure a tracer "on-the-fly" as I described in an earlier post?
/Bengt 2010/11/1 Willem Jiang <willem.ji...@gmail.com> > On 10/30/10 4:49 PM, Bengt Rodehav wrote: > >> I have a similar situation but I'm not using Spring - I use Java DSL and >> iPOJO. >> >> I have my own tracer that I can publish as an OSGi service using iPOJO. I >> want to accomplish the following. My other services shall have optional >> service dependencies to my tracer. This means that if my custom tracer is >> available then it should be used, otherwise the default tracer should be >> used. >> >> However, just publishing my tracer and requiring it in my other components >> does not automatically cause Camel to use it. I have to to the following: >> >> getContext().addInterceptStrategy(mTracer); >> >> getContext().setTracing(false); >> >> >> In other words I explicitly set my tracer to be used, I then disable >> tracing >> since the first line seems to automatically enable tracing. I then use JMX >> to enable/disable tracing. I was hoping the above two lines were >> unnecessary >> and that merely the existence of a tracer should cause Camel to use it. Is >> that a Spring specific functionality? I was hoping that any way that an >> OSGi >> service was published/consumed would work? >> > > If you take a look at the code of > AbstractCamelContextFactoryBean.afterPropertiesSet() which is used to set > the camel context from the sprint configuration, you will find it calls the > same code. > > If you don't want to write upper code twice, you may need to write a > Factory to create the camel context instance in the same way and look up the > tracer from the OSGi service registry. > > [1] > https://svn.apache.org/repos/asf/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java > > > >> /Bengt >> >> 2010/10/30 Richard Kettelerij<richardkettele...@gmail.com> >> >> >>> You don't have to add a Tracer to your Spring context yourself. Camel >>> adds >>> one automatically if you have a CamelContext declared in Spring. Also >>> your >>> don't have to do anything with the "trace" option in your Spring context. >>> >>> I find that the easiest way to enable/disable tracing in production is >>> through JMX. Just navigate to the CamelContext MBean and modify the >>> "tracing" attribute. Additionally you can determine what should be traced >>> by >>> modifying a few options in the Tracer MBean. >>> >>> ----- >>> Richard Kettelerij, >>> http://github.com/rkettelerij >>> -- >>> View this message in context: >>> >>> http://camel.465427.n5.nabble.com/Enabling-tracing-in-production-tp3243013p3243143.html >>> Sent from the Camel - Users mailing list archive at Nabble.com. >>> >>> >> > > -- > Willem > ---------------------------------- > FuseSource > Web: http://www.fusesource.com > Blog: http://willemjiang.blogspot.com (English) > http://jnn.javaeye.com (Chinese) > Twitter: willemjiang >