Para ésta configuración usaré las siguientes versiones de ActiveMQ y Tomcat:
Librerías necesarias:
1.- INSTALACION TOMEE.
Para el caso vamos a instalar el TOMEE en la siguiente carpeta: c:\TomeePluMe.Seguidamente asignamos a la variable de ambiente TOMCAT_HOME=c:/Tomee
2.- INSTALACION ACTIVEMQ.
Lo instalamos en c:\apache-activemq
ACTIVEMQ_HOME:c:/apache-activemq
Seguidamente copiamos las siguiente librerias a
TOMCAT_HOME/common/lib
- activemq-all-X.X.X.jar (ACTIVEMQ_HOME)
- slf4j-log4j12-X.X.X.jar (ACTIVEMQ_HOME/lib/optional)
- log4j-X.X.XX.jar (ACTIVEMQ_HOME/lib/optional)
Configuración del archivo server.xml
Procederemos modificar el archivo server.xml que se encuentra en TOMCAT_HOME/conf para incluir lo siguiente dentro del elemento GlobalNamingResources:
< GlobalNamingResources > < Resource name = "jms/ConnectionFactory" auth = "Container" type = "org.apache.activemq.ActiveMQConnectionFactory" description = "JMS Connection Factory" factory = "org.apache.activemq.jndi.JNDIReferenceFactory" brokerURL = "tcp://127.0.0.1:61616" brokerName = "activeMQBroker" /> < Resource auth = "Container" name = "jms/MiCola" type = "org.apache.activemq.command.ActiveMQQueue" description = "Cola de mensajes" factory = "org.apache.activemq.jndi.JNDIReferenceFactory" physicalName = "laCola.queue" /> </ GlobalNamingResources > |
Configuración del archivo context.xml
En el archivo context.xml que se encuentra en TOMCAT_HOME/conf incluir lo siguiente:
< Context > < ResourceLink global = "jms/ConnectionFactory" name = "jms/ConnectionFactory" type = "javax.jms.ConnectionFactory" /> < ResourceLink global = "jms/MiCola" name = "jms/MiCola" type = "javax.jms.Queue" /> </ Context > |
Configuración del archivo web.xml
En el descriptor de despliegue web.xml que se encuentra en TOMCAT_HOME/conf incluir lo siguiente:
< resource-ref > < description >JMS Connection</ description > < res-ref-name >jms/ConnectionFactory</ res-ref-name > < res-type >javax.jms.ConnectionFactory</ res-type > < res-auth >Container</ res-auth > < res-sharing-scope >Shareable</ res-sharing-scope > </ resource-ref > < resource-ref > < res-ref-name >jms/MiCola</ res-ref-name > < res-type >javax.jms.Queue</ res-type > < res-auth >Container</ res-auth > < res-sharing-scope >Shareable</ res-sharing-scope > </ resource-ref > |
Laa configuración, la conexión a ActiveMQ será visible para cualquier aplicación web desplegada sobre Tomcat.
Ejemplo Java para conexión a ActiveMQ y envió de un mensaje
Se deatlla un ejemplo en código Java para conectarnos al bróker de mensajería y envíar un mensaje de texto.
//... Context initContext = new InitialContext(); Context jndiContext = (Context) initContext.lookup( "java:comp/env" ); ActiveMQConnectionFactory qFactory = (ActiveMQConnectionFactory)jndiContext.lookup( "jms/ConnectionFactory" ); QueueConnection qConnect = qFactory.createQueueConnection(); qConnect.start(); QueueSession qSession = qConnect.createQueueSession( false , Session.AUTO_ACKNOWLEDGE); Queue requestQ = (Queue) jndiContext.lookup( "jms/MiCola" ); QueueSender qSender = qSession.createSender(requestQ); ObjectMessage msg = qSession.createObjectMessage( new String( "Hola, ActiveMQ" )); qSender.send(msg); qConnect.stop(); ActiveMQ webconsole allows you to see broker information from a webapp. You can send and see messages for queues, topic…
Se tiene problemas con las nuevas versiones de TOMEE, de aquello resulta complicado la visualizacion de la consola.
Para ello se tiene un simple solucion:
Solo edite el archivo conf/system.properties y adicione estas lineas: # to use local broker inside tomee # but other config exist for remote broker # see activemq webconsole doc webconsole.type = invm # workaround for conflicts between activemq webapp and tomee # Note: it will be part of TomEE 1.6.1 out of the box openejb.classloader.forced-skip = org.apache.activemq.broker. openejb.classloader.forced-load = org.apache.xbean.spring. |
No hay comentarios:
Publicar un comentario