Tomcat 5.5 + JDK 5 + JMX

要讓 jconsole 連上 tomcat 去 control or monitoring 裡面的 MBean,在 tomcat 這端要做以下的設定

  1. 如果不需要安全機制的話,可以下列設定啟動 tomcat
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9003 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
  1. 因為沒有 security 機制的加持,他人只要知道你的 IP & port number,就可以連上你的 tomcat 去惡搞了。解決法為至少加上 user name/password 認證
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9003 -Dcom.sun.management.jmxremote.password.file= /opt/apache-tomcat-5.5.12/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file= /opt/apache-tomcat-5.5.12/conf/jmxremote.access -Dcom.sun.management.jmxremote.ssl=false"

上面的換行是供 Linux 使用的,如果執行於 windows 的話請自行修改成一單行。

如果你加上了認證的機制,就需要有 access control file 及 password file,以下為 jmxremote.access 的範例

# The "monitorRole" role has readonly access. 
# The "controlRole" role has readwrite access. 
monitorRole readonly 
controlRole readwrite

接著是 jmxremote.password 的範例

# The "monitorRole" role has password "QED". 
# The "controlRole" role has password "R&D". 
monitorRole QED 
controlRole R&D

都很簡單吧!如果要進一步的支援 SSL 之類的機制,請參考以下相關文章