このサンプル コードを使用して、Active MQ http://www.tomcatexpert.com/blog/2010/12/20/integrating-activemq-tomcat-using-global-jndi#ex-tomcat-server-xmlを実装しました。
Tomcat サーバーでメッセージを正常に送受信できます。
ここで、Shared File System Master Slave を実装する必要がありました。そのために、以下の手順に従ってactivemq.xml構成を変更しました
activemq.xml に networkConnector と transportConnector を追加
<networkConnectors> <networkConnector name="My Queue" uri="static://(tcp://172.16.121.144:61616,tcp://172.16.121.146:61616)" /> </networkConnectors> <transportConnectors> <transportConnector name="openwire" uri="tcp://172.16.121.144:61616"/> </transportConnectors>
activemq.xml
<?xml version="1.0"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.3.0.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />
<broker xmlns="http://activemq.apache.org/schema/core"
brokerName="172.16.121.144"
dataDirectory="\\172.16.121.145\Shared Doc\amq\activemq\activemq-data"
schedulerSupport="false"
useJmx="true">
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">">
<pendingSubscriberPolicy>
<vmCursor />
</pendingSubscriberPolicy>
</policyEntry>
<policyEntry queue=">">
<pendingQueuePolicy>
<vmQueueCursor />
</pendingQueuePolicy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
<managementContext>
<managementContext createConnector="false"/>
</managementContext>
<networkConnectors>
<networkConnector name="My Queue" uri="static://(tcp://172.16.121.144:61616,tcp://172.16.121.146:61616)" />
</networkConnectors>
<persistenceAdapter>
<kahaDB directory="\\172.16.121.145\Shared Doc\amq\activemq\activemq-data\kahadb"/>
</persistenceAdapter>
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="128 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="1 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="100 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://172.16.121.144:61616"/>
</transportConnectors>
</broker>
</beans>
例外を下回る
INFO - ContextLoader - Root WebApplicationContext: initialization started INFO - XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Tue Aug 20 12:31:15 IST 2013]; root of context hierarchy INFO - XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/jms-context.xml] INFO - DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@bc6a12:defining beans [connectionFactory,fooQueue,singleConnectionFactory,jmsTemplate,messageSenderService,jmsMessageDelegate,myMessageListener,org.springfra mework.jms.listener.DefaultMessageListenerContainer#0]; root of factory hierarchy INFO - DefaultLifecycleProcessor - Starting beans in phase 2147483647 INFO - DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1bc3ec9: defining beans [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,org.apache.activemq.xbean.XBeanBrokerService#0]; root of factory hierarchy INFO - BrokerService - Using Persistence Adapter: KahaDBPersistenceAdapter[\\172.16.121.145\SharedDoc\amq\activemq\activemq-data\ka hadb] INFO - BrokerService - ActiveMQ 5.4.1 JMS Message Broker (172.16.121.144) is starting INFO - BrokerService - For help or more information please see: http://activemq.apache.org/ INFO - TransportServerThreadSupport - Listening for connections at: tcp://01hw385526:61616 INFO - TransportConnector - Connector openwire Started INFO - DiscoveryNetworkConnector - Establishing network connection from vm://172.16.121.144?async=false&network=true to tcp://172.16.121.144:616 16 INFO - TransportConnector - Connector vm://172.16.121.144 Started INFO - DiscoveryNetworkConnector - Establishing network connection from vm://172.16.121.144?async=false&network=true to tcp://172.16.121.146:616 16 INFO - DemandForwardingBridgeSupport - 172.16.121.144 bridge to 172.16.121.144 stopped INFO - Transport - Transport failed: org.apache.activemq.transport.TransportDisposedIOException: Peer (vm://172.16.121.144#3) di sposed. org.apache.activemq.transport.TransportDisposedIOException: Peer (vm://172.16.121.144#3) disposed. at org.apache.activemq.transport.vm.VMTransport.stop(VMTransport.java:159) at org.apache.activemq.transport.vm.VMTransportServer$1.stop(VMTransportServer.java:81) at org.apache.activemq.transport.TransportFilter.stop(TransportFilter.java:65) at org.apache.activemq.transport.TransportFilter.stop(TransportFilter.java:65) at org.apache.activemq.transport.ResponseCorrelator.stop(ResponseCorrelator.java:132) at org.apache.activemq.util.ServiceSupport.dispose(ServiceSupport.java:43) at org.apache.activemq.network.DiscoveryNetworkConnector.onServiceAdd(DiscoveryNetworkConnector.java:137) at org.apache.activemq.transport.discovery.simple.SimpleDiscoveryAgent.start(SimpleDiscoveryAgent.java:77) at org.apache.activemq.network.DiscoveryNetworkConnector.handleStart(DiscoveryNetworkConnector.java:186) at org.apache.activemq.network.NetworkConnector$1.doStart(NetworkConnector.java:61) at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:53) at org.apache.activemq.network.NetworkConnector.start(NetworkConnector.java:202) at org.apache.activemq.broker.BrokerService.startAllConnectors(BrokerService.java:2094) at org.apache.activemq.broker.BrokerService.start(BrokerService.java:518) at org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java :1581) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1522 ) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64) at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52) at org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:96) at org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:52) at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) at org.apache.activemq.transport.vm.VMTransportFactory.doCompositeConnect(VMTransportFactory.java:121) at org.apache.activemq.transport.vm.VMTransportFactory.doConnect(VMTransportFactory.java:53) at org.apache.activemq.transport.TransportFactory.doConnect(TransportFactory.java:51) at org.apache.activemq.transport.TransportFactory.connect(TransportFactory.java:80) at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:243) at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:258) at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:230) at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:178) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196) at $Proxy4.createConnection(Unknown Source) at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184) at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:404) at org.springframework.jms.listener.AbstractJmsListeningContainer.establishSharedConnection(AbstractJmsListeningContainer.java:372) at org.springframework.jms.listener.DefaultMessageListenerContainer.establishSharedConnection(DefaultMessageListenerContainer.java:760) at org.springframework.jms.listener.AbstractJmsListeningContainer.doStart(AbstractJmsListeningContainer.java:279) at org.springframework.jms.listener.AbstractJmsListeningContainer.start(AbstractJmsListeningContainer.java:264) at org.springframework.jms.listener.DefaultMessageListenerContainer.start(DefaultMessageListenerContainer.java:561) at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:167) at org.springframework.context.support.DefaultLifecycleProcessor.access$1(DefaultLifecycleProcessor.java:154) at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:339) at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:143) at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:108) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:926) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:467) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:897) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:873) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) INFO - TransportConnector - Connector vm://172.16.121.144 Stopped INFO - DemandForwardingBridgeSupport - Network connection between vm://172.16.121.144#2 and tcp://172.16.121.146:61616 shutdown due to a local error : org.apache.activemq.transport.TransportDisposedIOException: Peer (vm://172.16.121.144#2) disposed. INFO - DemandForwardingBridgeSupport - 172.16.121.144 bridge to Unknown stopped INFO - NetworkConnector - Network Connector My Queue Started INFO - BrokerService - ActiveMQ JMS Message Broker (172.16.121.144, ID:01hw385526-51685-1376982077589-0:0) started INFO - TransportConnector - Connector vm://localhost Started INFO - ContextLoader - Root WebApplicationContext: initialization completed in 3479 ms INFO - DispatcherServlet - FrameworkServlet 'jms-webapp': initialization started INFO - XmlWebApplicationContext - Refreshing WebApplicationContext for namespace 'jms-webapp-servlet': startup date [Tue Aug 20 12:31:18 IST 20 13]; parent: Root WebApplicationContext INFO - XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/jms-webapp-servlet.xml] INFO - DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@e975db: defining beans [jmsMessageSenderController,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context .annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.contex t.annotation.internalCommonAnnotationProcessor,org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter#0,org.springframework.web .servlet.view.InternalResourceViewResolver#0,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; p arent: org.springframework.beans.factory.support.DefaultListableBeanFactory@bc6a12 INFO - DefaultAnnotationHandlerMapping - Mapped URL path [/send.html] onto handler 'jmsMessageSenderController' INFO - DispatcherServlet - FrameworkServlet 'jms-webapp': initialization completed in 375 ms Aug 20, 2013 12:31:19 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory C:\apache-tomcat-7.0.25\webapps\docs Aug 20, 2013 12:31:19 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory C:\apache-tomcat-7.0.25\webapps\examples Aug 20, 2013 12:31:19 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory C:\apache-tomcat-7.0.25\webapps\host-manager Aug 20, 2013 12:31:19 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory C:\apache-tomcat-7.0.25\webapps\manager Aug 20, 2013 12:31:19 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory C:\apache-tomcat-7.0.25\webapps\ROOT Aug 20, 2013 12:31:19 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] Aug 20, 2013 12:31:19 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] Aug 20, 2013 12:31:19 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 4825 ms INFO - DiscoveryNetworkConnector - Establishing network connection from vm://172.16.121.144?async=false&network=true to tcp://172.16.121.146:616 16 INFO - TransportConnector - Connector vm://172.16.121.144 Started INFO - Transport - Transport failed: org.apache.activemq.transport.TransportDisposedIOException: Peer (vm://172.16.121.144#7) di sposed. org.apache.activemq.transport.TransportDisposedIOException: Peer (vm://172.16.121.144#7) disposed. at org.apache.activemq.transport.vm.VMTransport.stop(VMTransport.java:159) at org.apache.activemq.transport.vm.VMTransportServer$1.stop(VMTransportServer.java:81) at org.apache.activemq.transport.TransportFilter.stop(TransportFilter.java:65) at org.apache.activemq.transport.TransportFilter.stop(TransportFilter.java:65) at org.apache.activemq.transport.ResponseCorrelator.stop(ResponseCorrelator.java:132) at org.apache.activemq.util.ServiceSupport.dispose(ServiceSupport.java:43) at org.apache.activemq.network.DiscoveryNetworkConnector.onServiceAdd(DiscoveryNetworkConnector.java:137) at org.apache.activemq.transport.discovery.simple.SimpleDiscoveryAgent$1.run(SimpleDiscoveryAgent.java:164) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) INFO - DemandForwardingBridgeSupport - Network connection between vm://172.16.121.144#6 and tcp://172.16.121.146:61616 shutdown due to a local error : org.apache.activemq.transport.TransportDisposedIOException: Peer (vm://172.16.121.144#6) disposed. INFO - TransportConnector - Connector vm://172.16.121.144 Stopped INFO - DemandForwardingBridgeSupport - 172.16.121.144 bridge to Unknown stopped