Я собрал информацию, распространившуюся по сети, с подсказками других участников.
Наибольшую боль, вызванную JMX, вызывает (imo) тот факт, что JMX открывает второй динамически выделяемый сетевой порт. Брандмауэр (например, iptables) заблокирует это.
Решение для tomcat в Linux:
используйте tomcat 6.0.24 или новее, загрузите catalina-jmx-remote.jar из дополнительных компонентов apache tomcat (используйте просмотр на странице загрузки tomcat), скопируйте его в $ CTALINA_HOME \ lib
Это позволяет вам установить оба порта, используемые JMX.
отредактируйте раздел Server в вашем server.xml
<Server port="8005" ..>
...
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="9840" rmiServerPortPlatform="9841"/>
установить некоторые переменные среды (например, в setenv.sh)
CATALINA_OPTS="
-Djava.rmi.server.hostname=IP-TO-LISTEN
-Dcom.sun.management.jmxremote.password.file=$CATALINA_BASE/conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access
-Dcom.sun.management.jmxremote.ssl=false"
это активирует контроль доступа для JMX
jmxremote.access будет выглядеть как
monitorRole readonly
controlRole readwrite
конец jmxremote.password будет
monitorRole tomcat
controlRole tomcat
(просто пробелы)
перезапустите кота.
Теперь настройте брандмауэр на сервере (например, iptables).
/ и т.д. / sysconfig / iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9840 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9841 -j ACCEPT
и / etc / sysconfig / ip6tables
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 9840 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 9841 -j ACCEPT
перезапустить iptables
Сделанный!
Теперь используйте VisualVM или JConsole на своей рабочей станции, чтобы установить соединение с rmiRegistryPortPlatform, 9840 в нашем примере.
Если между рабочей станцией и сервером больше нет брандмауэров, все должно работать.
person
Hajo Thelen
schedule
21.07.2011