Idea在Mac上如何同时启动多个tomcat运行多个web项目 - Go语言中文社区

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,如图:
这里写图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Eden_M516/article/details/73838482
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 21:12:31
  • 阅读 ( 1384 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢