前言
整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比力旧,此版本为 v11 最新的版本。
开源项目
从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。
系列文章
web server apache tomcat11-01-官方文档入门先容
web server apache tomcat11-02-setup 启动
web server apache tomcat11-03-deploy 如何部署
web server apache tomcat11-04-manager 如何管理?
web server apache tomcat11-06-Host Manager App -- Text Interface
web server apache tomcat11-07-Realm Configuration
web server apache tomcat11-08-JNDI Resources
web server apache tomcat11-09-JNDI Datasource
web server apache tomcat11-10-Class Loader
...
简介
监控是体系管理的关键方面。查看运行中的服务器,获取一些统计信息或重新设置应用步伐的某些方面都是一样寻常管理使命。
启用 JMX 远程
注意:只有在您要远程监视 Tomcat 时才需要此设置。如果您打算利用与 Tomcat 运行的雷同用户在本地监视它,则不需要此设置。
Oracle 网站包罗了有关选项列表以及如安在 Java 11 上设置 JMX 远程的信息:Java 11 JMX 远程设置。
以下是 Java 11 的快速设置指南:
在 Tomcat 的 setenv.bat 脚本中添加以下参数(有关详细信息,请参阅 RUNNING.txt)。
注意:此语法实用于 Microsoft Windows。命令必须在同一行上。它被包装以增加可读性。如果 Tomcat 作为 Windows 服务运行,请利用其设置对话框为服务设置 Java 选项。对于 Linux、MacOS 等,请从行的开头删除 "set "。- set CATALINA_OPTS=-Dcom.sun.management.jmxremote.port=%my.jmx.port%
- -Dcom.sun.management.jmxremote.rmi.port=%my.rmi.port%
- -Dcom.sun.management.jmxremote.ssl=false
- -Dcom.sun.management.jmxremote.authenticate=false
复制代码 如果不设置 com.sun.management.jmxremote.rmi.port,则 JSR 160 JMX-Adaptor 将随机选择一个端口,这将使得设置防火墙以答应访问变得困难。
如果需要 TLS:
更改并添加以下内容:- -Dcom.sun.management.jmxremote.ssl=true
- -Dcom.sun.management.jmxremote.registry.ssl=true
复制代码 要设置协议和/或暗码套件,请利用:- -Dcom.sun.management.jmxremote.ssl.enabled.protocols=%my.jmx.ssl.protocols%
- -Dcom.sun.management.jmxremote.ssl.enabled.cipher.suites=%my.jmx.cipher.suites%
复制代码 对于客户端证书身份验证,请利用:- -Dcom.sun.management.jmxremote.ssl.need.client.auth=%my.jmx.ssl.clientauth%
复制代码 如果需要授权(强烈建议始终利用身份验证的 TLS):
更改并添加以下内容:- -Dcom.sun.management.jmxremote.authenticate=true
- -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
- -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access
复制代码 编辑访问授权文件 $CATALINA_BASE/conf/jmxremote.access:- monitorRole readonly
- controlRole readwrite
复制代码 编辑暗码文件 $CATALINA_BASE/conf/jmxremote.password:- monitorRole tomcat
- controlRole tomcat
复制代码 提示:暗码文件应该是只读的,并且只能被 Tomcat 运行的操作体系用户访问。
或者,您可以利用以下设置 JAAS 登录模块:- -Dcom.sun.management.jmxremote.login.config=%login.module.name%
复制代码 如果需要指定用于发送到客户端的 RMI 存根的主机名(例如,由于必须利用的公共主机名与本田主机名不同),则可以设置:- set CATALINA_OPTS=-Djava.rmi.server.hostname
复制代码 如果需要为 JMX 服务绑定到的特定接口,请设置:- set CATALINA_OPTS=-Dcom.sun.management.jmxremote.host
复制代码 利用 JMX 远程 Ant 使命管理 Tomcat
为了简化 Ant 中的 JMX 利用,提供了一组可用于 antlib 的使命。
antlib:将 catalina-ant.jar 从 $CATALINA_HOME/lib 复制到 $ANT_HOME/lib。
以下示例表现了 JMX Accessor 的用法:
注意:这里对 name 属性值进行了包装以增加可读性。它必须全部在同一行上,没有空格。- <project name="Catalina Ant JMX"
- xmlns:jmx="antlib:org.apache.catalina.ant.jmx"
- default="state"
- basedir=".">
- <property name="jmx.server.name" value="localhost" />
- <property name="jmx.server.port" value="9012" />
- <property name="cluster.server.address" value="192.168.1.75" />
- <property name="cluster.server.port" value="9025" />
- <target name="state" description="Show JMX Cluster state">
- <jmx:open
- host="${jmx.server.name}"
- port="${jmx.server.port}"
- username="controlRole"
- password="tomcat"/>
- <jmx:get
- name=
- "Catalina:type=IDataSender,host=localhost,
- senderAddress=${cluster.server.address},senderPort=${cluster.server.port}"
- attribute="connected"
- resultproperty="IDataSender.backup.connected"
- echo="false"
- />
- <jmx:get
- name="Catalina:type=ClusterSender,host=localhost"
- attribute="senderObjectNames"
- resultproperty="senderObjectNames"
- echo="false"
- />
-
- <jmx:get
- name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
- attribute="maxActiveSessions"
- resultproperty="clustertest.maxActiveSessions.original"
- echo="true"
- />
-
- <jmx:set
- name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
- attribute="maxActiveSessions"
- value="100"
- type="int"
- />
-
- <jmx:invoke
- name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
- operation="listSessionIds"
- resultproperty="sessions"
- echo="false"
- delimiter=" "
- />
-
- <jmx:invoke
- name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
- operation="getSessionAttribute"
- resultproperty="Hello"
- echo="false"
- >
- <arg value="${sessions.0}"/>
- <arg value="Hello"/>
- </jmx:invoke>
-
- <jmx:query
- name="Catalina:type=Manager,*"
- resultproperty="manager"
- echo="true"
- attributebinding="true"
- />
-
- <echo>
- senderObjectNames: ${senderObjectNames.0}
- IDataSender.backup.connected: ${IDataSender.backup.connected}
- session: ${sessions.0}
- manager.length: ${manager.length}
- manager.0.name: ${manager.0.name}
- manager.1.name: ${manager.1.name}
- hello: ${Hello}
- manager.ClusterTest.0.name: ${manager.ClusterTest.0.name}
- manager.ClusterTest.0.activeSessions: ${manager.ClusterTest.0.activeSessions}
- manager.ClusterTest.0.counterSend_EVT_SESSION_EXPIRED:
- ${manager.ClusterTest.0.counterSend_EVT_SESSION_EXPIRED}
- manager.ClusterTest.0.counterSend_EVT_GET_ALL_SESSIONS:
- ${manager.ClusterTest.0.counterSend_EVT_GET_ALL_SESSIONS}
- </echo>
- </target>
- </project>
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |