我有一些问题让JMX在Jetty上运行(9.1.3.v20140225),所以我已经阅读了Jetty doco.
# ======================================================== # 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命令的一部分,因为doco告诉我将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,因为doco所说的应该是jetty-jmx.xml.
在任何情况下,当我启动Jetty时,我在日志文件中看到它正在启动
信息:oejj.ConnectorServer:main:JMX远程URL:服务:jmx:rmi://主机:1099 / jndi / rmi://主机:1099 / jmxrmi
我可以从服务器telnet到1099,从我的客户端,我已经使用nmap来仔细检查端口是否正在监听并在netstat中看到它.当我使用VisualVM连接时,我只是得到一个错误.
我确保打开了网络和Jetty位置之间的所有端口.
任何人都可以指出我正确的方向来实现这一目标.
谢谢
解决方法
对它进行排序,需要手动将其添加到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做的事情.