专业化管理 > 站点维护 > 使用 Java Management Extensions (JMX) > 远程 JMX 监控
  
远程 JMX 监控
出厂设置的 Windchill 配置导致服务器端进程仅允许来自于同一计算机和用户帐户的进入 JMX 连接。
* 
IBM JVM 不提供这一“本地连接”功能。要在使用 IBM JVM 时连接到 Tomcat 或服务器管理器,必须配置远程 JMX 连接。而且,Windows 服务通常也在不同的用户帐户下运行。如果不更改这种配置,则无法使用本地监控来监控任何作为 Windows 服务运行的进程。
出厂时使用此配置,以便配置默认为安全、锁定的配置。
您可能想要从其他计算机或用户帐户检验服务器进程。JConsole 和 VisualVM 是 JMX 控制台,能够形成出厂设置配置所允许的连接类型。
使用 Jconsole 管理远程计算机
如果使用 JConsole 管理远程计算机,则必须指定要连接的计算机上特定 servlet 引擎、服务器管理器或方法服务器的主机名和端口号。使用 JConsole 连接窗口中的“远程进程”选项卡来输入此信息。
另外,您必须配置远程计算机以接受远程管理。有关配置计算机以接受远程管理的详细信息,请参阅以下 URL:
http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html#gdenl
使用 VisualVM 管理远程计算机
如果使用 VisualVM 管理远程计算机,则必须指定要连接的计算机上特定服务器管理器或方法服务器的主机名和端口号。从 VisualVM 连接窗口中的“文件”菜单选择“添加 JMX 连接”来输入此信息。
另外,您必须配置远程计算机以接受远程管理。有关配置计算机以接受远程管理的详细信息,请访问以下 URL (提供的 JConsole 信息还适用于 VisualVM):
http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html#gdenl
配置到服务器管理器和方法服务器的 JMX 连接
* 
由于此配置不安全,因此仅应将其用于测试目的。有关如何更改这些设置及配置更安全的 JMX 连接的详细信息,请参阅 Web 站点上的文档,其 URL 如下:
因此 PTC 推荐使用本部分中介绍的特性,以便维护和与技术支持轻松交互等。此外,还可以手动运行 Windchill Configuration Assistant来配置一个经过验证但采用非 SSL 的远程 JMX 连接。运行 Assistant 时,对以下提示回复 y
Do you want to enable authenticated (non-SSL) remote JMX access (y/n)?
方法服务器与服务器管理器的不同之处在于,服务器管理器启动多个方法服务器,而方法服务器只在旧服务器停止响应时启动新的方法服务器,等等。
方法服务器会在 wt.jmx.rmi.minPort 和 wt.jmx.rmi.maxPort wt.properties 设置指定的范围内选择第一个可用的端口。
* 
不应将单个固定的 JMX RMI 端口分配给 Windchill 方法服务器 (使用 wt.jmx.rmi.port 特性)。而应允许每个方法服务器从由 wt.jmx.rmi.minPort 和 wt.jmx.rmi.maxPort 指定的端口范围中获取一个可用端口。
系统会使用服务器管理器级别的 JMX MBean 属性显示直接连接到给定方法服务器所必需的信息。使用 xconfmanager 实用程序来设置以下属性 (该示例分多行显示;请在一行上输入 xconfmanager 命令):
xconfmanager -s wt.manager.cmd.common.jmx.args="-Dcom.sun.management.jmxremote
-Djmx.remote.protocol.provider.pkgs=wt.jmx.remote.protocol
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.ssl.need.client.auth=false"
-s wt.manager.cmd.ServerManager.jmx.args="-Dwt.jmx.rmi.port=<open_port>"
-t wt.properties -p
其中 <open_port> 可以是您选取的任何已启用的 TCP/IP 端口的编号。这是在建立远程连接时指定的端口号。
* 
请务必在 xconfmanager 命令中加入 -p 选项以传播这些更改。
* 
您可以使用 JMX Properties MBean 来添加这些设置,但仍需要重新启动服务器。请参阅使用 MBean 修改特性值
存在防火墙时的远程连接
一般情况下,会将防火墙配置为阻止 RMI。不幸的是,RMI 是 JDK 中用于 "JSR 160" JMX 远程通信的内置网络协议。JSR 160 为 JMX 远程协议指定了常规体系结构,但在 JDK 的最新支持版本中不包括任何其他协议。
Windchill 为 JMX JSR 160 远程通信提供了一个专用的、不透明的 HTTP(S) 代理,名为 JmxProxyServlet。在网络访问方面,这一代理仅需要对 Windchill web 应用程序进行正常的 HTTP(S) 访问。
要使用此 JSR 160 实用技能 JMX 控制台和按照本指南中前述章节的说明而建立的 JMX RMI 连接,请执行以下步骤:
1. 将以下文件从 codebase/lib 复制到 Java JDK jdk/lib/ext 目录:
WtHttpClientAddOns.jar
WtJmxClientConn.jar
要执行此操作,可在浏览器中浏览至以下 URL,选取这些文件后将结果保存到 Java JDK jdk/lib/ext 目录:
http(s)://yourHostAndPort/yourWebAppName/lib
2. 向 JMX 控制台提供以下 JSR 160 连接 URL:
service:jmx:ptchttp://yourHostAndPort/yourWebAppName/servlet/JmxProxyServlet?jmxurl
=service:jmx:rmi://jmxTargetHost/jndi/rmi://jmxTargetHost:jmxTargetPort/jmxrmi
其中,您应替换以下内容:
如果使用 https,则将 http 替换为 https
用您的 web 服务器主机和端口替换 yourHostAndPort
yourWebAppName 替换为 Windchill Web 应用程序名称,例如,Windchill_10
分别用代理 servlet 通过 JMX RMI 应连接到的主机名和端口替换 jmxTargetHostjmxTargetPort
对于 JConsole 而言,既可在命令行中提供步骤 2 所需的 URL,也可以使用 JConsole 连接窗口中的“远程进程”选项来提供。
提供了一个实用程序来简化所需 URL 的创建过程。要使用该实用程序,只要步骤 1 中标识的 JAR 使用其初始名称存储在相同的目录下,就不需要将其安装于 JDK jdk/lib/ext 目录中。
在命令行中输入以下命令:
从与 WtJmxClientConn.jar 相同的目录中:
...java -jar WtJmxClientConn.jar -usage
从任意位置 (只要 WtJmxClientConn.jar 位于该 classpath 中):
...java com.ptc.jmx.client.Main -usage
* 
可以使用帮助来输入命令行,或使用图形实用程序来构建 JMX 服务 URL 并可选择使用此 URL 启动 JConsole。在 Windows 中,只需双击 WtJmxClientConn.jar 就可启动该实用程序的图形化版本。