Tomcat:在哪里configurationjmx JAVA_OPTS或CATALINA_OPTS

我在Ubuntu上安装了Tomcat。 我想启用JMX进行监控,所以在catalina.sh我修改JAVA_OPTS为:

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=4998 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

重新启动后JMX正在工作,但是当我想阻止tomcat它给错误:

错误:代理抛出的exception:java.rmi.server.ExportException:已经使用的端口:5555;嵌套的exception是:java.net.BindException:已经在使用的地址:

经过一些Googlesearch之后,我发现我们已经将所有的JMXconfiguration写入到CATALINA_OPTS但是在CATALINA_OPTS写入所有configuration之后,我无法连接。

catalina.sh一起创build一个名为setenv.sh的文件。 这样,所有的更改都在一个单独的文件中。

使用CATALINA_OPTS而不是JAVA_OPTS因为CATALINA_OPTS仅用于开始,而JAVA_OPTS用于开始和停止。

如果您已经从软件包安装了Tomcat,则必须修改该文件中的JAVA_OPTS

 /etc/default/tomcat... 

嗨,进一步明确的答案,我join下面。

我在$CATALINA_HOME/bin/下创build了一个setenv.sh文件。 文件内容如下。

 JAVA_OPTS="-Dcom.sun.management.jmxremote=true \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false \ -Djava.rmi.server.hostname=192.168.40.10" 

没有必要在catalina.sh中添加文件setenv.sh,因为通过setenv.sh的名字看到文件将自动接受参数。 然后,我在catalina.sh添加了一个粗体字体,如下所示。

 if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then . "$CATALINA_BASE/bin/setenv.sh" elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then . "$CATALINA_HOME/bin/setenv.sh" fi ***export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=9090"*** 

这样我们可以避免Tomcat中的端口冲突问题。 谢谢。

你有什么东西在5555上运行? 你可以尝试跑步

 lsof -i :5555 or netstat -tulpn | grep :\5555 

看看那个端口上运行的是什么