Não é possível parar o tomcat6 ao usar opções de porta jmx

2

Temos o tomcat6 rodando em dois ambientes diferentes, ambos rodando o CentOS 6.6 e o OpenJDK 1.7. Em um ambiente, não consigo parar o tomcat6 ao emitir

service tomcat6 stop

No ambiente em que isso está falhando, a única diferença é que existem algumas opções adicionais:

-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=**8081**
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote=true
-Djava.rmi.server.hostname=172.19.13.211

Ao parar, os seguintes erros são registrados em catalina.out:

OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory (errno = 1).
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory (errno = 1).
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory (errno = 1).
Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: **8081**; nested exception is: 
        java.net.BindException: Address already in use

Parece que a porta jmx é o que está causando este problema, mas sem removê-lo completamente, existe uma maneira de fazer o tomcat6 parar normalmente?

UPDATE 1

O link mencionado no meu comentário levou-me a uma post no blog que eu segui. Eu criei o arquivo /usr/share/tomcat6/bin/setenv.sh e o deixei legível com o seguinte conteúdo:

export CATALINA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=8081 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=172.19.13.211"

No entanto, ao iniciar o tomcat6, as opções do jmx não estão sendo incluídas. Alguma sugestão?

    
por vmoralito 10.11.2015 / 17:59

1 resposta

0

Veja o que funcionou para mim:

Usando algumas informações de esta página , adicionei o seguinte ao script de inicialização tomcat6 ( que no meu caso foi /usr/sbin/tomcat6 ):

if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
  . "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
  . "$CATALINA_HOME/bin/setenv.sh"
fi

O conteúdo final do meu arquivo /usr/share/tomcat6/bin/setenv.sh :

#!/bin/sh
export CATALINA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false \
                      -Dcom.sun.management.jmxremote.port=8081 \
                      -Dcom.sun.management.jmxremote.ssl=false \
                      -Dcom.sun.management.jmxremote=true \ 
                      -Djava.rmi.server.hostname=172.19.13.211"

Agora eu posso iniciar o tomcat6 com sucesso com as opções do jmx:

[root@hrndvsoi-dev1-ucsync01 tomcat6]# service tomcat6 start
Starting tomcat6:                                          [  OK  ]

[root@hrndvsoi-dev1-ucsync01 tomcat6]# ps -ef | grep tomc | grep -v grep | sed -e 's/ /\n/g' | grep -e jmx -e rmi
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8081
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote=true
-Djava.rmi.server.hostname=172.19.13.211

E eu posso parar o tomcat6 sem erros:

[root@hrndvsoi-dev1-ucsync01 tomcat6]# service tomcat6 stop
Stopping tomcat6:                                          [  OK  ]

Espero que isso ajude alguém.

    
por 10.11.2015 / 22:02