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

原创 2017年06月28日 12:56:46

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

Intellij Idea调试功能总结

Debug的时候调试功能必不可少,各个集成环境调试的思想和步骤肯定是一样的,只不过快捷键和图标不太一样而已借着记录Intellij Idea的调试快捷键和图标含义,总结一下常用的调试功能 ...

Intellij IDEA 2017 debug断点调试技巧与总结详解篇

在Intellij IDEA debug 调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。 下面不要在意,这个快捷键具体是啥,因为,这...

IDEA部署多个web项目的方法

以往的Eclipse、NetBeans等开发工具不同,IDEA的Project相当与Eclipse的Workspace,而Module相当于Project。 下边就给出Eclipse与IDEA的...

IntelliJ IDEA 14.x 创建工作空间与多个Java Web项目

IntelliJ IDEA 14.x 创建工作空间与多个Java Web项目     来源:http://blog.snsgou.com/post-854.html 以往的Eclips...

IntelliJ IDEA 14.x 创建工作空间与多个Java Web项目

原文链接:http://blog.snsgou.com/post-852.html 作者:SNSGOU 发布于:2015-01-17 13:10:58  分类:电脑/软件使用     评论(...

Tomcat部署多个项目运行 及JVM_Bind 报错解决方法(8080,8009,8005)

因有需求需要在自己电脑部署多个项目运行,遇到如下如下一些问题,现记录下解决方法供参考        环境:  电脑系统Win7,免安装版 tomcat7 , Jdk1.7 (因为需部署多个项目,用的是...
  • chao430
  • chao430
  • 2017年11月13日 15:32
  • 51

Intellij IDEA下一个Tomcat启动带多个虚拟目录和JDNI数据源的应用的方法

前言: 之前公司做的一个老项目代码比较早,加上之前开发以实现功能为主,也没有对编码加以规范,开发中也有应届毕业的小孩,所以代码很烂。最近在重构过程中引出一些问题。 言归正传,场...
  • Zhaky
  • Zhaky
  • 2016年10月10日 17:52
  • 1925

Tomcat 部署多个web项目

在一个tomcat中部署多个web项目,一般只需要简单的將web程序放到tomcat安装目录/webapps中即可,但部署springboot项目,却另有操作。...

tomcat部署多个web项目

Licensed to the Apache Software Foundation (ASF) under one or more   contributor license agreements...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Idea在Mac上如何同时启动多个tomcat运行多个web项目
举报原因:
原因补充:

(最多只允许输入30个字)