在单个服务器上运行2个tomcat实例

时间:2014-04-04 19:02:58

标签: tomcat tomcat6 jmx

我正在尝试在单个上运行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的第一个实例添加了日志,我在catalina日志文件中看到以下行:

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

我在整个tomcat目录中使用了3000,但是没有关于端口3000的配置。所以我认为这是默认配置。有人知道如何修改此配置。

2 个答案:

答案 0 :(得分:0)

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 {} \;

答案 1 :(得分:0)

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