Idea在Mac上如何同时启动多个tomcat运行多个web项目

更新:跟idea的开发人员经过几天的沟通之后,他们告诉我无法重现这个问题,而我在两个其他人的mac上都成功重现了,所以目前暂时搁置了这个issue。
不过他们给了一个建议的解决方案,不要重设环境CATALINA_BASE变量,而是完整地复制一份tomcat,命名成其他的比如tomcat8999,然后修改它的server.xml,把端口改掉,在另一个项目中的Application Server中Configure一个新的tomcat server。

最近手头有两个项目需要本地运行联调,在mac上死活都不能同时运行,不管先启动哪一个,启动第二个的时候就会报错,端口已经改过。
这里写图片描述

28-Jun-2017 11:10:54.274 严重 [main] org.apache.catalina.core.StandardServer.await StandardServer.await: create[localhost:8005]: 
 java.net.BindException: Address already in use
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
    at java.net.ServerSocket.bind(ServerSocket.java:376)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)
    at org.apache.catalina.core.StandardServer.await(StandardServer.java:438)
    at org.apache.catalina.startup.Catalina.await(Catalina.java:718)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:664)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)

看起来是shutdown用的8005端口冲突了,但是我记得以前在windows上用idea的时候直接改了http和jmx端口就可以直接同时运行了,又向用windows的同学求证了一下,确实是这样,那为什么mac就不行呢?

查了很久,没有找到原因。后来发现Idea在运行tomcat的时候会使用自己自动生成的配置文件,我看了一下,在windows上shutdown端口冲突的时候会自动随机选择另一个端口,而mac上则不会,所以mac上就会报8005端口被占用。因为idea用的是自己的配置不会去读tomcat的配置,所以两个tomcat也是没用的。

这个问题我已经向JetBrains提了issue,至于会不会被看到就不知道了_(:з」∠)_。下附临时解决方案:
tomcat中有两个环境变量,一个是CATALINA_HOME,一个是CATALINA_BASE,其中前者指向tomcat的程序目录,后者则指向tomcat运行时的工作目录,当只有一个tomcat运行的时候可以设置为同一个。也就是说,如果我们需要一个tomcat程序同时运行多个不同的实例的时候,可以将CATALINA_BASE设置成不同的。

以tomcat8为例,首先将tomcat目录下conf、logs、temp、webapps和work文件夹复制到新的目录,如/Users/yourname/tomcat8006。
然后修改tomcat8006/conf下的server.xml,将shutdown端口、http端口和ajp端口都改掉,如果还需要用到https,还需要将8443那个端口改掉。
改完之后在idea设置tomcat的地方的Startup/Connection标签下添加环境变量,Run和Debug用哪个在哪个里面加,都用都加。变量名CATALINA_BASE,值为刚刚新增的/Users/yourname/tomcat8006,如图:
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值