Adsence

jueves, 18 de junio de 2015

Configuracion Wildfly para habilitar el uso de MDB con ActiveMQ

Dentro del estandar JEE en su capa de negocios tenemos los diferentes tipos de EJBs entre los cuales tenemos los siguientes tipos:
  • Session Beans
  • Entity Beans
  • Singleton
  • MDB
Cada uno con un uso particular, en este post hablaremos un poco de los MDBs, este tipo de beans son los que nos ayudan con la implementacion de mensajeria (JMS) en JEE.
Normalmente dentro de las aplicaciones existen tipos de procesos que necesitamos trabajarlos desacoplados del proceso de negocio principal, como puede ser una integracion, este es el escenario ideal para usar este tipo de beans. Para poder hacerlo se hace necesario el uso de un broker de mensajeria que para este caso es ActiveMQ, tenemos que seguir los siguientes pasos:



1  Descargar en activemq-rar-5.6.0.rar.

Se descarga el activemq-rar-5.6.0.rar y se lo coloca en la siguiente dirección WILDFLY_HOME\standalone\deployments

2 Configuración para el activeMQ

Se edita el archivo standalone.xml que se encuentra en la dirección WILDFLY_HOME\standalone\configuration, se coloca el adaptador para el activeMQ en la sección  <subsystem xmlns="urn:jboss:domain:resource-adapters:2.0">, se añade el código que se encuentra en la parte de abajo,  donde  hace referencia al archivo que colocamos en la carpeta deployments, la dirección, puerto, conexiones, etc.

<resource-adapters>
                <resource-adapter id="activemq">
                    <archive>
                        activemq-rar-5.6.0.rar
                    </archive>
                    <transaction-support>XATransaction</transaction-support>
                    <config-property name="UseInboundSession">
                        false
                    </config-property>
                    <config-property name="Password">
                        defaultPassword
                    </config-property>
                    <config-property name="UserName">
                        defaultUser
                    </config-property>
                    <config-property name="ServerUrl">
                        tcp://localhost:61616
                    </config-property>
                    <connection-definitions>
                        <connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name="java:/ConnectionFactory" enabled="true" pool-name="ConnectionFactory">
                            <xa-pool>
                                <min-pool-size>1</min-pool-size>
                                <max-pool-size>20</max-pool-size>
                                <prefill>false</prefill>
                                <is-same-rm-override>false</is-same-rm-override>
                            </xa-pool>
                        </connection-definition>
                    </connection-definitions>
                    <admin-objects>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/reinsurance.state.in" use-java-context="true" pool-name="TandiESBQueue">
                            <config-property name="PhysicalName">
                                TandiESBQueue
                            </config-property>
                        </admin-object>
                    </admin-objects>
                </resource-adapter>
            </resource-adapters>


3 Añadir la configuración para soportar MDB

Para poder usar los MDB se debe editar el archivo standalone.xml en la sección <subsystem xmlns="urn:jboss:domain:ejb3:2.0"> donde va el siguiente código.
<mdb>
                <resource-adapter-ref resource-adapter-name="activemq"/>
                <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
</mdb>

4 Se crea un MDB

El propertyValue =”reinsurance.state.in” del propertyName=”destination” es el nombre de cola a consumir en el método onMessage.