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

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

相关文章推荐

【IDEA】Intellij IDEA创建的Web项目配置Tomcat并启动Maven项目

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 本篇博客讲解IDEA如何配置Tomcat、大部分是直接上图哦、点击如图所示的地方,进...

Intellij idea 中启动多个tomcat server失败问题解决

如我在由eclipse转intellij Idea中提到,由于由Eclipse刚投入Intellij的怀抱不久,对一些使用尚不熟悉,尤其这两天在Intellij中配置启动多个Tomcat出现了问题。问...

IntelliJ IDEA像Eclipse一样打开多个项目

我们做项目实际中经常会遇到这样的情况,创建一个common项目(Maven项目)作为公用项目,common中有很多工具类可以供其它多个项目调用。 例如,把common、service都单独拆开成独立的...
  • zht666
  • zht666
  • 2015-08-21 11:55
  • 115699

Mac下intellij idea环境的项目的新建、配色、快捷键的配置

注:本文所使用的intellij idea是14.1.2的版本。一、项目的新建(以新建Java项目为例)选中其中的“create new project”。接下来你会看到以下界面。2、接下来一直点击n...

Intellij IDEA同时打开多个项目

IntelliJ Idea 常用快捷键列表   Alt+回车 导入包,自动修正 Ctrl+N   查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L  格式化代码 Ctrl+Alt...
  • diqi77
  • diqi77
  • 2016-12-14 14:30
  • 6943

Intellij idea13配置tomcat,并实现一个简单的servlet

准备: 1. 安装jdk1.7 2. 安装tomcat1.8 一、创建并设置javaweb工程 1.创建javaweb工程 File --> New --> Projec...

Intellij IDEA 远程debug、远程tomcat部署项目

加班比较多,很少时间学其它东西了,最近项目部署比较复杂,本地运行比较困难,因此想在测试服务器环境debug和部署,远程部署还是有点问题,先记录一下环境apache-tomcat-7.0.47 Int...

IDEA部署多个web项目的方法

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

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

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

由eclipse转intellij idea

设置字符集utf8依次打开 File | Settings | Editor | File Encodings,将IDE Encoding、Project encoding 、default enco...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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