camel spring osgi is there a way to specify the stop method

camel spring osgi is there a way to specify the stop method  using -'spring,osgi,apache-camel'

I'm running a Camel Spring OSGI application. The Camel context is initialized through Spring.
When the bundle stops, I need to do some clean-up activities, like de-registering the message listener. How do I do that? Is there a method I can override? I understand that an OSGI bundle must provide the activator start and stop methods but my understanding also is that the Camel/Spring/OSGI framework overrides these methods.

My beanx.xml:

  <camelContext id="camel" xmlns="">
    <routeBuilder ref="outboundBuilder" />

My java code:

public class MyRouteBuilder extends RouteBuilder {
    public void configure() {


asked Oct 6, 2015 by rolvyrf
0 votes

1 Answer

0 votes

Just to expand a little on the answer of Bilgin Ibryam which is correct.

Camel has the ability to apply a policy to a route. This Policy controls routes at runtime. This will allow you to do custom logic at certain events of the route life time.

Implementing a route policy.

It is rather simple declare a new class which extends RoutePolicySupport then override the methods you are interested in.

public class MyRoutePolicy extends RoutePolicySupport{

        public void onStart(Route route) {
        // TODO Auto-generated method stub

    public void onStop(Route route) {
        // TODO Auto-generated method stub

    public void onExchangeBegin(Route route, Exchange exchange) {
        // TODO Auto-generated method stub
        super.onExchangeBegin(route, exchange);


Now use the route in your routebuilder configure() method like this:

 RoutePolicy policy = new MyRoutePolicy();
   .setBody().constant("A Message Like Hello World")

If you were just using a Spring XML with a route then add the following:

" rel="nofollow" target="_blank">">
     A Message Like Hello World        
answered Oct 6, 2015 by loknath.ganji