【问题标题】:Running 2 instance of tomcat on a single server在单个服务器上运行 2 个 tomcat 实例
【发布时间】:2014-04-04 19:02:58
【问题描述】:

我正在尝试在单个上运行 2 个 tomcat 实例。我已经更新了两个 tomcat 实例的 server.xml,以便 http/https 端口不同。我还更新了 setenv.sh 中的 CATALINA_OPTS 以便远程 jmx 端口不同。

Tomcat 1 的 CATALINA_OPTS:

CATALINA_OPTS="-Dcom.sun.management.jmxremote \
    -Dcom.sun.management.jmxremote.port=7061 \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -javaagent:/mnt/production/tomcat/bin/remoteagent.jar"

Tomcat 2 的 CATALINA_OPTS:

CATALINA_OPTS="-Dcom.sun.management.jmxremote \
    -Dcom.sun.management.jmxremote.port=7065 \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -javaagent:/mnt/production/tomcat/bin/remoteagent.jar \
    -Djava.security.auth.login.config=$CATALINA_HOME/conf/crowd.conf"

但是当我尝试启动第二个 tomcat 实例时,我在端口 3000 上遇到了绑定异常。我对第一个 tomcat 实例的日志进行了 grep,我在 catalina 日志文件中看到了以下行:

Created service URL service:jmx:rmi://localhost:3001/jndi/rmi://localhost:3000/jmxrmi

我将整个 tomcat 目录 grep 为 3000,但没有关于端口 3000 的配置。所以我认为这是一些默认配置。有人知道如何修改此配置。

【问题讨论】:

标签: tomcat tomcat6 jmx


【解决方案1】:

server.xml用于设置tomcat服务器端口,如http、https、shutdown、AJP等。但不用于jmx remote。

您似乎有一个单独的环境文件 setenv.sh (unix) 或 setenv.bat (windows) 设置 JMX 连接 URL

Attribute   Description               Example
url         Set JMX connection URL    service:jmx:rmi:///jndi/rmi://localhost:8050/jmxrmi

请在第二个实例中查找并更新到其他端口。

这里是关于 jmx 远程设置的 tomcat 6 文档。 https://tomcat.apache.org/tomcat-6.0-doc/monitoring.html

如果还是找不到哪个文件的端口,请确认你grep整个tomcat目录的命令

cd $TOMCAT_HOME
find . -type f -exec grep -l 3000 {} \;

【讨论】:

    【解决方案2】:

    您可以在 CATALINA_OPTS 中设置 -Dcom.sun.management.jmxremote.port=%my.jmx.port% 以更改 JMX 端口。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 2017-06-08
      相关资源
      最近更新 更多