I have a server which loads the application context with the parameter -ac
camel-server.xml: 

<broker:broker useJmx="false" persistent="false" brokerName="localhost">
                <broker:transportConnectors>
                        <broker:transportConnector name="tcp" 
uri="tcp://localhost:61616"/>
                </broker:transportConnectors>
        </broker:broker>
        
        <!-- Connection factory for ActiveMQ endpoints -->
        <bean id="connectionFactoryActiveMQ"
                class="org.apache.activemq.ActiveMQConnectionFactory">
                <property name="brokerURL" value="vm://localhost"/>
        </bean>

<!---------->

<bean id="inOutQueue" class="org.apache.activemq.command.ActiveMQQueue">
                <constructor-arg value="inOutQueue"/>
        </bean>

<bean id="checkinServices"
                
class="org.springframework.jms.remoting.JmsInvokerServiceExporter">
                <property name="serviceInterface"
                        value="MyManager"/>
                <property name="service">
                        <bean class="MyManagerImpl"/>
                </property>
        </bean>


<bean
                
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
                <property name="connectionFactory" 
ref="connectionFactoryActiveMQ"/>
                <property name="destination" ref="inOutQueue"/>
                <property name="maxConcurrentConsumers" value="5"/>
                <property name="concurrentConsumers" value="5"/>
                <property name="messageListener" ref="checkinServices"/>
        </bean>

Then I have a camel-client.xml file which I start up from my Java code. 
AbstractApplicationContext context =  new
ClassPathXmlApplicationContext("camel-client.xml");

myManager = (MyManager) context.getBean("checkinServices");
myManager.shutdown();


---------------------

So when the client sends a message to a queue defined in camel-client.xml on
an activemq broker which was fired up by camel-server.xml, the server side
processes the message with the services defined to listen on the respective
queue. 

In the shutdown method I do the following: 

public void shutdown() throws Exception 
        Main main = Main.getInstance();        
        if(main != null) {
            if(main.getApplicationContext() != null){
                
                main.getApplicationContext().close();
                // main.getApplicationContext().registerShutdownHook();
            }
        } 
    }


I expect that in the shutdown method I am going to get the instance of Main
that started the camel-server.xml applicatoin context and when I close it
the active mq broker will be closed as well. 

Hope you can follow this through. 
Semir






Claus Ibsen-2 wrote:
> 
> Hi
> 
> I would assume the AMQ is also shutting down the the
> applicationContext is closed, so Spring is shutting down and thus
> shuts down all the bean that is handling the lifecycle for.
> 
> If you run the camel-jms example in Camel then the AMQ broker is also
> stopping when you stop the example.
> 
> We have lately patched the Main with a JVM shutdown hook so when you
> press CLTR + C to stop it then it will also call doStop() so its
> gracefully shutting down it all.
> 
> Can you show the applicationContext and what you do to stop the Main?
> And which version of Camel and AMQ are you using?
> 
> 
> On Fri, Jan 16, 2009 at 10:00 AM, selezovikj <semir.elezo...@gmail.com>
> wrote:
>>
>> I am using org.apache.camel.spring.Main -ac file.xml to start up Camel.
>> In the xml file I have configuration for starting an ActiveMq broker on
>> host
>> 61616, defined queues, and also beans responsible for handling messages
>> which are sent on the request/response queues.
>>
>> Now I want a way to gracefully shutdown the camel service.
>> I see that in the doStop() method of the Main class the
>> AbstractApplicationContext is closed.
>> When this is closed, the activeMq broker which we fired up is still
>> running.
>>
>> Can someone please explain me what precisely is going on when the
>> applicationContext is closed ?
>> Also how to gracefully stop the instance of Main that fired up the
>> activeMq
>> broker and that loads the xml configuration file ?
>>
>> Any help will be greatly appreciated
>>
>>
>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/ApplicationContext-close-tp21495001s22882p21495001.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/
> 
> 

-- 
View this message in context: 
http://www.nabble.com/ApplicationContext-close-tp21495001s22882p21495886.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to