jueves 12 de febrero de 2009

JBoss 5.0.0.GA error: SocketProcessId.getpid could not get unique port.

Un pequeño error en la configuración de resolución de nombres de mi Ubuntu, impedía que que el JBoss 5.0 levantará normalmente con una configuración local en mi maquina de desarrollo.

El log de error no es muy descriptivo que digamos:

23:29:34,795 INFO [TransactionManagerService] JBossTS Transaction Service (JTA version) - JBoss Inc.
23:29:34,795 INFO [TransactionManagerService] Setting up property manager MBean and JMX layer
23:29:35,287 ERROR [AbstractKernelController] Error installing to Create: name=TransactionManager state=Configured
com.arjuna.ats.arjuna.exceptions.FatalError: [com.arjuna.ats.internal.arjuna.utils.SocketProcessId_2] - SocketProcessId.getpid could not get unique port.
at com.arjuna.ats.internal.arjuna.utils.SocketProcessId.getpid(SocketProcessId.java:105)
at com.arjuna.ats.arjuna.utils.Utility.getpid(Utility.java:277)
at com.arjuna.ats.arjuna.common.Uid.(Uid.java:105)
at com.arjuna.ats.arjuna.utils.Utility.getProcessUid(Utility.java:289)
at com.arjuna.ats.internal.arjuna.recovery.TransactionStatusManagerItem.(TransactionStatusManagerItem.java:366)

La solución es fácil, aunque costo un poco encontrarla. El S.O. tiene que poder resolver correcta y bidirecionalmente su hostname.
Para verificarlo probar que funcione correctamente el comando:
$ ping `hostname`

En un PC de desarrollo el hostname comúnmente resuelve a 127.0.0.1

Si el comando no funciona revisar la configuración de resolución de nombres, en mi caso fue suficiente con editar "/etc/hosts" y agregar una linea que resuelva correctamente mi hostname a 127.0.0.1

.