1.- Configurar ActiveMQ como componente externo.
<tomee>
<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
# Esto indica que el ActiveMQ broker no inicia cuando arranca el TOMEE
BrokerXmlConfig =
ServerUrl = tcp://someHostName:61616
</Resource>
<Resource id="MyJmsConnectionFactory" type="javax.jms.ConnectionFactory">
ResourceAdapter = MyJmsResourceAdapter
</Resource>
<Container id="MyJmsMdbContainer" ctype="MESSAGE">
ResourceAdapter = MyJmsResourceAdapter
</Container>
<Resource id="FooQueue" type="javax.jms.Queue"/>
<Resource id="BarTopic" type="javax.jms.Topic"/>
</tomee>
El "ServerUrl" debe ser modificado para que comtemple el host y el puerto que el
Proceso ActiveMQ. Los diferentes formatos de URL que ActiveMQ.
2.- Configurar ActiveMQ como componente interno
<tomee>
<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
BrokerXmlConfig = broker:(tcp://someHostName:61616)
ServerUrl = tcp://someHostName:61616
</Resource>
<Resource id="MyJmsConnectionFactory" type="javax.jms.ConnectionFactory">
ResourceAdapter = MyJmsResourceAdapter
</Resource>
<Container id="MyJmsMdbContainer" ctype="MESSAGE">
ResourceAdapter = MyJmsResourceAdapter
</Container>
<Resource id="FooQueue" type="javax.jms.Queue"/>
<Resource id="BarTopic" type="javax.jms.Topic"/>
</tomee>
La propiedad "BrokerXmlConfig" invoca a ActiveMQ para que inicie
en conjunto cuando arranca el TOMEE con su host y puerto asignado
en este caso `someHostName` and `61616`
3.- Estructura de los archivos
- aplicacion.war
- pages
- images
- META-INF
- ejb-jar.xml
- MANIFEST.MF
- openejb-jar.xml ( Opcional )
- stylesheet
- WEB-INF
- classes
- de
- Directorio con las clases
- log4j.xml
- hibernate.cfg.xml
- lib
- web.xml
- index.jsp
4.- Configurar Propiedades del MDB.
En esta URL: CONFIGURACION DEL EJB-JAR.XML
Aqui un ejemplo: Un Ejemplo
5.- Configurar Persistencia de activemq con Mysql.
Tomado desde esta url: Persistencia Activemq y Mysql
Revisar el archivo activemq.xml que esta ubicado en la carpeta donde esta instalado
el activemq/conf
useShutdownHook="false" >
...
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#mysql-ds"/>
</persistenceAdapter>
...
</broker>
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="username" value="usuario"/>
<property name="password" value="passwordBBDD"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
Se tiene que copiar el driver de Mysql a la carpeta lib del activemq.
Tambien es posible utilizar una base de datos que es muy eficiente para este tipo de cosas, aqui un pequeño ejemplo de como hacerlo:
useShutdownHook="false" destroyApplicationContextOnStop="false">
...
<persistenceAdapter>
<kahaPersistenceAdapter directory="${activemq.base}/activemq-data" maxDataFileLength="33554432"/>
</persistenceAdapter>
...
</broker>
No hay comentarios:
Publicar un comentario