camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From selezovikj <semir.elezo...@gmail.com>
Subject Re: ApplicationContext close
Date Mon, 19 Jan 2009 09:26:12 GMT

I am looking at the camel-example-spring-jms example, but I can not see the
code where the shutting down of Camel + Spring + AMQ is done. 
Can you please tell me how to perform shutdown from within the application
code ? 



Claus Ibsen-2 wrote:
> 
> It should be Spring that shutsdon the ActiveMQ broker and not Camel.
> AMQ is defined in spring. So if you can get Spring to shutdown nicely
> then it should also shutdown all its beans.
> 
> We run AMQ embedded in many unit tests in Camel and when we stop the
> unit test we stop the camel context, and spring application context
> and it nicely shuts down AMQ as well.
> 
> Since Camel is a spring bean itself you should be able to just get
> Spring shutting down then it should shutdown all its bean and thus
> also Camel and AMQ.
> 
> What's in the log when you stop?
> 
> Have you tried looking at the camel-example-jms that is in the Camel
> distribution. Its started using Main and can start/shutdown
> Camel+Spring+AMQ.
> 
> 
> On Fri, Jan 16, 2009 at 10:49 AM, selezovikj <semir.elezovic@gmail.com>
> wrote:
>>
>> 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.elezovic@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.
>>
>>
> 
> 
> 
> -- 
> -------
> 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-tp21495001s22882p21539401.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Mime
View raw message