idea启动多个tomcat失败
Intellij idea中,为在本地调试两个系统之间的调用,配置两个本地tomcat server,设置不同的端口号,如8081和8082,Deploy中加入两个系统各自的Artifact xxx:war, Application context设置为“/“,即访问地址分别为http://localhost:8081/ 和 http://localhost:8082/ 。
问题来了,分别单独启动两个server时都能成功;但是同时启动两个系统时,两个系统都会出现问题。其中较先启动的server报错为:StandardServer.await: Invalid command ” received,然后会有一个系统报出异常,提示找不到xml或者properties等。
寻求解决方法
报出的找不到xml或properties等异常,肯定是误报,因为单独启动时是没有问题的。
根据StandardServer.await: Invalid command ” received百度或者google,得到的结果基本是端口的问题。但是我已经配置了不同的端口号,除上述的http port外,我还查看了server.xml中的shut down port、ajp port等等,均不相同。大略可以排除端口号的问题。
请教同事,同事解释Application context不能同为”/”,Intellij会将web发布到tomcat目录下的ROOT中,两者必然冲突。提供了两种解决方案:
- Application context区别开,如”/weba/”和”/webb/”
- 将tomcat安装目录复制一份,用两套tomcat部署
我恍然同时,又觉得Eclipse完全可以实现啊,Intellij这都实现不了是不是有点low了。
问题解决
最终的最终,我发现了问题所在。在Deploy中加入的Artifact不应该是war,而应该选择第二种war explored!
搜索了war和war explored的区别。网上大都在讨论两者最大的区别是explored支持热加载,方便本地修改调试。但是针对本文的问题,没有找到直接解释。
自己浅析一下:war理所当然会打为war包,发布时候脱离了你本地项目目录,发布到了Tomcat目录\webapps\ROOT下;explored方式,是将web root指向了你的本地项目。因此war形式会产生冲突,而explored方式不会,且explored方式可以热加载。
转载自:http://blog.csdn.net/unifirst/article/details/52153950
但经验证,两个项目都设置成 war explored还是会报错,于是只能一个设置成war 另一个设置成war explored。这样就可以了,还有一种就是设置两个项目的Application context不能同为”/” 。让运行的资源分开放。
公众号【一个码农的日常】 技术群:319931204 1号群: 437802986 2号群: 340250479
出处:http://zhangs1986.cnblogs.com/
码云:https://gitee.com/huanzui
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?