idea 同时跑两个 Tomcat 的解决方法

问题:

我的 idea 版本:IntelliJ IDEA 2018.2.4

(只说问题不放版本的都是耍流氓!!!)

首先idea需要同时打开两个用到 Tomcat 的 web 项目,注意,与其他软件不一样的是双击 idea 不能打开第二个idea窗口,而是需要在菜单栏的 File 中打开:

然后在两个 idea 窗口中跑两个 Tomcat,我开启的分别是 Tomcat7 和 Tomcat8 ,并且我的 Tomcat7 已经修改了端口号为8070,不会有端口冲突问题。

但是我在第一个 idea 窗口启动了 Tomcat7(host:8070)之后,在第二个 idea 窗口启动 Tomcat8(host:8080)时,idea 会报端口冲突的问题,即无法启动 Tomcat8(host:8080),占用的端口号为 1099。

 

解决方法:

打开 Tomcat 配置页面,就可以发现 idea 的1099 端口,把端口号修改为未被使用的任意端口即可。

修改之后,就可以完成两个 idea 窗口同时运行两个 web 项目了~~~

 

原因:

JVX是什么:JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。

上边是官方介绍,网上有这样一段话,可以让我们理解一下JVX:

1、程序初哥一般是写死在程序中,到要改变的时候就去修改代码,然后重新编译发布。

2、程序熟手则配置在文件中(JAVA一般都是properties文件),到要改变的时候只要修改配置文件,但还是必须重启系统,以便读取配置文件里最新的值。

3、程序好手则会写一段代码,把配置值缓存起来,系统在获取的时候,先看看配置文件有没有改动,如有改动则重新从配置里读取,否则从缓存里读取。

4、程序高手则懂得物为我所用,用JMX把需要配置的属性集中在一个类中,然后写一个MBean,再进行相关配置。另外JMX还提供了一个工具页,以方便我们对参数值进行修改。

感兴趣的话,我找到一篇文章:JVX的超详细解读

### 如何在 IntelliJ IDEA 中配置并同时启动两个不同端口号的 Tomcat 实例 要在 IntelliJ IDEA (简称IJ) 中同时运行两个具有不同端口的 Tomcat 实例,可以通过调整每个 Tomcat 的配置参数实现。以下是具体的方法: #### 1. 创建多个 Tomcat 运行/调试配置 在 IJ 中,可以为每个 Tomcat 实例创建独立的运行/调试配置。点击顶部菜单栏 `Run` -> `Edit Configurations...` 打开配置窗口。 - 点击左上角的加号 (`+`) 并选择 `Tomcat Server` -> `Local` 来新增一个 Tomcat 配置。 - 对于第二个 Tomcat 实例重复上述步骤,确保它们分别对应不同的名称(例如 `Tomcat_8080` 和 `Tomcat_9090`)。 #### 2. 修改 Tomcat 的 HTTP 端口和其他相关端口 默认情况下,Tomcat 使用以下主要端口: - **HTTP 端口**: 默认为 8080。 - **Shutdown 端口**: 默认为 8005。 - **AJP Connector 端口**: 默认为 8009。 - **JMX/RMI 登录器服务端口**: 默认为 1099[^3]。 为了避免端口冲突,需分别为这两个 Tomcat 实例分配不重叠的端口集合。编辑每个 Tomcat 配置时,在 `Server` 标签页下的 `Startup/Connection` 设置区域修改这些端口值。 - 将第一个 Tomcat 的 HTTP 端口设为 8080,其他端口保持不变或适当偏移。 - 将第二个 Tomcat 的 HTTP 端口改为 9090,其余端口也相应更改以避免冲突(例如 Shutdown 改为 8006, AJP 改为 8010 等)。 #### 3. 调整 CATALINA_OPTS 或 JAVA_OPTS 参数 如果需要针对某个特定的 Tomcat 实例启用远程调试等功能,则可通过设置环境变量 `CATALINA_OPTS` 完成[^1]。注意区分各个实例所使用的选项,防止相互干扰。 ```bash export CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n" ``` 此命令适用于其中一个 Tomcat;另一个可指定不同的地址(如 5006)。将其加入对应的运行配置中即可。 #### 4. 测试多实例并发运行情况 完成以上配置后保存设置,并尝试依次启动两套 Tomcat 服务。观察控制台日志确认两者均能正常初始化且监听各自设定好的端口无误。 --- ### 示例代码片段展示如何动态加载 WAR 文件至外部 Tomcat 当涉及 Spring Boot 应用程序部署到外置 Tomcat 场景下时,可能还需要额外处理打包与发布流程[^2]: ```java @SpringBootApplication public class MyApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` 构建工具 Maven 可通过插件生成标准 war 包形式供传统 Servlet 容器加载使用。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值