JBoss : java.net.BindException: Address already in use: JVM_Bind
Lorsque vous démarrez JBoss, vous obtenez l’erreur ci-dessous :
[ServiceController] Problem starting service jboss.mq:service=InvocationLayer,type=UIL2 java.net.BindException: Address already in use: JVM_Bind
Avant de changer les ports dans jboss-service.xml, il faut regarder si tous les ports de JBoss sont disponibles.
Ci-dessous, la liste des ports utilisés et les services associés :
Port | Type | Service Name |
---|---|---|
1098 | TCP | jboss:service=Naming |
1099 | TCP | jboss:service=Naming |
3873 | TCP | jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3 |
4444 | TCP | jboss:service=invoker,type=jrmp (legacy 4.0.x invoker) |
4445 | TCP | jboss:service=invoker,type=pooled (legacy 4.0.x invoker) |
4446 | TCP | jboss.remoting:service=Connector,transport=socket (EJB2 beans in AS/EAP 4.2+) |
8009 | TCP | jboss.web:service=WebServer |
8080 | TCP | jboss.web:service=WebServer |
8083 | TCP | jboss:service=WebService |
8090 | TCP | jboss.mq:service=InvocationLayer,type=OIL |
8092 | TCP | jboss.mq:service=InvocationLayer,type=OIL2 |
8093 | TCP | jboss.mq:service=InvocationLayer,type=UIL2 |
Ci-dessous, la liste des ports utilisés et les fichiers de conf associés :
Port | Type | Service Descriptor |
---|---|---|
1098 | TCP | conf/jboss-service.xml |
1099 | TCP | conf/jboss-service.xml |
3873 | TCP | deploy/ejb3.deployer/META-INF/jboss-service.xml |
4444 | TCP | conf/jboss-service.xml |
4445 | TCP | conf/jboss-service.xml |
4446 | TCP | conf/jboss-service.xml |
8009 | TCP | deploy/jbossweb-tomcat41.sar/META-INF/jboss-service.xml |
8080 | TCP | deploy/jbossweb-tomcat41.sar/META-INF/jboss-service.xml |
8083 | TCP | conf/jboss-service.xml |
8090 | TCP | deploy/jms/oil-service.xml |
8092 | TCP | deploy/jms/oil2-service.xml |
8093 | TCP | deploy/jms/uil2-service.xml |
Dans l’erreur, JBoss donne le nom du service problématique.
Dans notre cas, il s’agit du service UIL2.
Si on réfère au tableau, on trouve le port 8093 (et l’adresse d’écoute par défaut est 127.0.0.1).
Sous Windows :
netstat -a permet de lister les ports utilisés et en ajoutant, le switch -b on obtient les processus attachés.
Avec la commande ci-desssous, vous allez savoir si un processus utilise le port sur cette adresse.
netstat -ab | find /N "127.0.0.1:8093"
Ensuite, il faut taper la commande complète sans le find pour repérer le processus.
netstat -ab
Sous Linux :
fuser -v -n tcp 8093
Enfin, il vous suffit soit d’arrêter le processus bindé sur le port que vous voulez utiliser soit changer le port du service.