sábado, marzo 14, 2015

Apuntes de TOMEE

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
      • *.jsp
    • images
      • *.jpg
    • META-INF
      • ejb-jar.xml
      • MANIFEST.MF
      • openejb-jar.xml ( Opcional )
    • stylesheet
      • *.css
    • WEB-INF
      • classes
        • de
          • Directorio con las clases
        • log4j.xml
        • hibernate.cfg.xml
      • lib
        • *.jar
      • 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 


<broker xmlns="http://activemq.apache.org/schema/core" brokerName="mibroker" persistent="true"
    useShutdownHook="false" >
    ...
    <persistenceAdapter>
        <jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#mysql-ds"/>
    </persistenceAdapter>
    ...
</broker>
<!-- Fuera del tag 'broker' -->
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
    <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:



<broker xmlns="http://activemq.apache.org/schema/core" brokerName="mibroker" persistent="true"
    useShutdownHook="false" destroyApplicationContextOnStop="false">
    ...
    <persistenceAdapter>
        <kahaPersistenceAdapter directory="${activemq.base}/activemq-data" maxDataFileLength="33554432"/>
    </persistenceAdapter>
    ...
</broker>

No hay comentarios: