jueves, 19 de enero de 2012

ResourceAdapterInternalException: MQJMSRA_RA4001: start:Aborting:Exception starting EMBEDDED broker=EMBEDDED Broker start failure:code = 1

Hay ocasiones que por celeridad o para evitarnos una configuración integra del Glassfish decidimos copiar el servidor de una máquina a otra. Esto tiene el por menor de tener que renombrar, en todos los lugares del servidor (exceptuando los ficheros binarios), la ip y el DNS antiguos por los nuevos. Esto lo podemos realizar mediante el comando:

grep -r "ip" /home/xyz/server/glassfishxyzCore/ 
grep -r "DNS" /home/xyz/server/glassfishxyzCore/ 

Donde tanto la ip como el DNS son las antiguas del servidor y glassfishxyzCore es la carpeta raíz del Glassfish. Entonces procedemos a re-arrancar el Glassfish, teniendo en cuenta que al cambiar la ip y el DNS el fichero lock que contiene la definición de imqbroker puede no refrescarse dando el siguiente error:

[#|2012-01-18T17:54:33.644+0100|SEVERE|sun-appserver2.1|javax.enterprise.resource.resourceadapter|_ThreadID=10;_ThreadName=main;_RequestID=6b789d3d-5089-4899-ad72-024b48a73a78;|RAR6035 : Resource adapter start failed : {0}
javax.resource.spi.ResourceAdapterInternalException: MQJMSRA_RA4001: start:Aborting:Exception starting EMBEDDED broker=EMBEDDED Broker start failure:code = 1
        at com.sun.messaging.jms.ra.ResourceAdapter.start(ResourceAdapter.java:476)
        at com.sun.enterprise.connectors.ActiveInboundResourceAdapter$1.run(ActiveInboundResourceAdapter.java:178)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.enterprise.connectors.ActiveInboundResourceAdapter.startResourceAdapter(ActiveInboundResourceAdapter.java:174)
        at com.sun.enterprise.connectors.ActiveInboundResourceAdapter.<init>(ActiveInboundResourceAdapter.java:132)
        at com.sun.enterprise.connectors.system.ActiveJmsResourceAdapter.<init>(ActiveJmsResourceAdapter.java:234)
        at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:107)
        at com.sun.enterprise.connectors.ResourceAdapterAdminServiceImpl.createActiveResourceAdapter(ResourceAdapterAdminServiceImpl.java:300)
        at com.sun.enterprise.connectors.ResourceAdapterAdminServiceImpl.createActiveResourceAdapter(ResourceAdapterAdminServiceImpl.java:445)
        at com.sun.enterprise.connectors.ConnectorRuntime.createActiveResourceAdapter(ConnectorRuntime.java:230)
        at com.sun.enterprise.jms.JmsProviderLifecycle.onStartup(JmsProviderLifecycle.java:428)
        at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:446)
        at com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:134)
        at com.sun.enterprise.server.PEMain.run(PEMain.java:409)
        at com.sun.enterprise.server.PEMain.main(PEMain.java:336)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.enterprise.server.PELaunch.main(PELaunch.java:415)
Caused by: java.lang.RuntimeException: EMBEDDED Broker start failure:code = 1
        at com.sun.messaging.jms.ra.EmbeddedBrokerRunner.start(EmbeddedBrokerRunner.java:268)
        at com.sun.messaging.jms.ra.ResourceAdapter.start(ResourceAdapter.java:472)
        ... 19 more
|#]



Para solucionarlo basta con eliminar el fichero lock situado en imqbroker, para ello lanzamos un comando similar a este (considerando glassfishxyzCore la carpeta raíz del Glassfish y xyz el dominio que queremos arrancar):

-bash-3.2$ rm /home/xyz/server/glassfishxyzCore/domains/xyz/imq/instances/imqbroker/lock

Tras esto reiniciamos el servidor, y el archivo lock, estaría regenerado.

La configuración del imqbroker quedaría con una estructura similar a esta:
imqbroker:DNS_NUEVA_IP:47676

No hay comentarios:

Publicar un comentario