启动多个Tomcat时修改端口,与修改端口后仍然以8080启动

在Windows下启动多个tomcat

之前已经配好了一个apache-tomcat-7.0.52,运行CAS(并改名为 apache-tomcat-CAS-9102 后简称为Tc)。后解压了另一个tomcat(改名为 apache-tomcat-Solr-9101简称Ts)运行Solr时遇到的一些问题

为了方便修改,我保留了一个原版没修改的文件夹 apache-tomcat-7.0.52(简称T7)

问题一:修改 tomcat 默认端口后 启动仍然为8080

首先:按习惯先修改默认端口8080避免冲突,于是我在 Ts 的server.xml 中把 8080改为9101,Tc 的8080改为9102

将 cas.war 放到 Tc 的 webapps 文件夹下,启动 Tc 。发现 启动成功 能够访问tomcat页面,但却是 8080 端口, war 包 没有被解压,Tc 下的 logs 文件夹下也没有任何日志文件。
也是我自己把自己坑进去了,开始一直以为是配置有问题后来运行原先的 Ts 也不行(改之前就叫 apache-tomcat-7.0.52) 才发现是我新解压了一个 apache-tomcat-7.0.52 做修改样板放在同级目录下,所以按我以前配的环境变量
tomcat环境变变量配置
不管我执行哪个tomcat都只会执行做样板的 apache-tomcat-7.0.52 原生程序

于是修改环境变量 :
配置多个CATALINA_HOME
同时修改 tomcat bin目录下的 catalina.bat 、startup.bat、shutdown.bat 。Ts 下这三个文件的 CATALINA_HOME 替换成 CATALINA_HOME1 ,相应的Tc 的替换成 CATALINA_HOME2
此时再分别启动 Tc 或 Ts 成功,用相应 端口 访问对应的页面也没问题了。

问题二:多个tomcat修改8080默认端口后仍然端口冲突

接上单个启动没问题后,我当然两个一起开咯。然后问题又来了

严重: Failed to initialize connector [Connector[AJP/1.3-8009]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[AJP/1.3-8009]]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:813)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:638)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:663)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:280)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:454)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:980)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    ... 12 more
Caused by: java.net.BindException: Address already in use: JVM_Bind <null>:8009
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:410)
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640)
    at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434)
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
    ... 13 more
Caused by: java.net.BindException: Address already in use: JVM_Bind
    at java.net.DualStackPlainSocketImpl.bind0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190)
    at java.net.ServerSocket.bind(ServerSocket.java:375)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)
    at java.net.ServerSocket.<init>(ServerSocket.java:181)
    at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:397)
    ... 16 more

不过这就很明显啦,虽然打印的没看清但是日志文件写的很清除:8009端口被占用,再看一下server.xml 文件中端口相关配置有

<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Connector port="9102" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

所以启动一个 tomcat 除了占用 8080 端口外还会占用 8005、8009、8443,选一个改成8006、8010、8444 再启动。同时运行通过

暂时没遇到别的问题,以后遇到再补充… …


我坚信每一分努力付出,必将换回一份收获!
Arvin_Chen编辑整理,欢迎转载,转载请声明文章来源。学习讨论欢迎联系QQ:1036033343

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值