我在让 JMX 在 Jetty(9.1.3.v20140225)上运行的时候遇到了一些问题,因此我阅读了有关此问题的 Jetty 文档。
所以我在 jetty.conf 中添加了以下内容
# ========================================================
# jetty.conf Configuration for jetty.sh script
# --------------------------------------------------------
# This file is used by the jetty.sh script to provide
# extra configuration arguments for the start.jar command
# created by that script.
#
# Each line in this file becomes an arguement to start.jar
# in addition to those found in the start.ini file
# =======================================================
jetty-logging.xml
jetty-started.xml
etc/jetty.xml
etc/jetty-jmx.xml
etc/jetty-jmx-remote.xml
我将 jmx 添加为 start.jar --add-to-start 命令的一部分,正如文档中告诉我的那样,作为将 Jconsole 连接到 Jetty 的一部分
http://www.eclipse.org/jetty/documentation/current/jetty-jconsole.html
[mybase]$ java /opt/jetty-dist/start.jar --add-to-start=jmx
INFO: jmx-remote initialised in ${jetty.base}/start.ini (appended)
INFO: jmx initialised transitively
当然,当我这样做时,它只添加了 jmx 而不是 jmx-remote,不确定为什么,但我希望有人能告诉我为什么。
从我读过的文档中说出这一切,我已经涵盖了他们想要实现这一目标的目的。
http://www.eclipse.org/jetty/documentation/current/jmx-chapter.html
但是就我在包中看到的内容而言,它所述的并不完全正确,因此我添加了 jetty-jmx-remote,因为文档中所说的内容应该在 jetty-jmx.xml 中。
无论如何,当我启动 Jetty 时,我在日志文件中看到它正在启动
信息:oejj.ConnectorServer:main:JMX 远程 URL:服务:jmx:rmi://host:1099/jndi/rmi://host:1099/jmxrmi
我可以从服务器远程登录到 1099,从我的客户端,我使用 nmap 仔细检查端口是否在监听,并在 netstat 中看到它。当我使用 VisualVM 进行连接时,我只收到一个错误。
我已确保打开了我的网络和码头位置之间的所有端口。
有人能给我指出正确的方向吗?
谢谢
答案1
已排序,需要手动将其添加到start.ini中
--module=jmx-remote
## JMX Configuration
## Enable for an open port accessible by remote machines
jetty.jmxrmihost=localhost
jetty.jmxrmiport=1099
## Strictly speaking you shouldn't need --exec to use this in most environments.
## If this isn't working, make sure you enable --exec as well
-Dcom.sun.management.jmxremote
并在 jetty-jmx.xml 中更新了它。
<Call class="java.lang.System" name="setProperty">
<Arg>java.rmi.server.hostname</Arg>
<Arg>IP-Address</Arg>
</Call>
另外不需要对 jetty.conf 进行我所做的操作。