因为以前用的开发工具是eclipse。在eclipse中启动多个相互引用的项目,或者不关联的项目,都是非常容易的,只需要创建tomcat实例即可,tomcat实例直接无项目关联关系。
但是现在使用的idea工具,就有问题了。
我现在的项目有三个,如下图:
其中api 是暴露出来的接口工程,api里面有controller,api与core工程通过dubbo+zookeeper 实现前后端分离的,api的接口调用core的接口,实现了接口的实现逻辑分离。但是现在有个问题,就是如果想要测试的话(不是单元测试),那就要同时启动两个工程才行。
当然,这两个项目单独启动都是没有问题的。但是同时启动时就有一个问题:无论先启动哪个,第一个项目都是能够正常启动的,但是第二个项目就启动不起来了。
我们想同时启动两个tomcat,那么首先想到的肯定是先修改端口号,但是我这两个都修改成不一样的端口号了,还是有问题,启动时总是报下面的错误:
只是提示部署失败。
后来从网上查阅,找到了一个解决方法,idea 同时启动多个tomcat时,应用上下文(Application context)不能一样,但是我们新建一个toncat实例是默认的应用上下文都是“/”,所以我们需要修改下应用上下文,所以我把其中一个改成了下图的这样:
修改应用上下文后,两个项目都能正常启动了。但是还是有个问题,我们知道idea的tomcat是可以设置一个默认打开页面路径的,但是刚才我这种设置了应用上下文后,项目启动打开的默认页面报404,我修改请求路径后,还是报404,因为我本地的开发都是根据这个默认页面开始的,所以现在默认页面打不开,就没法请求接口了。
从网上查看了很多关于idea同时启动多个项目的方法,具体的有以下几种:
1.修改不同的端口号
2.修改端口号和应用上下文
3.复制一份tomcat到别的路径下,用两个idea打开不同的项目(这个我直接pass掉了,太麻烦)。
4.勾选tomcat设置:Deploy applications configured in Tomcat instance 每次启动使用不同实例
但是像我这种的好像没有什么文章描述的(也是我写这篇博文的目的),所以我又仔细看了看我的配置,试了很多方法都不行,最后我看了以下我配置的应用上下文,我试着修改了一下,把原来的“/ad/”改成了“/ad”,然后重新启动了一下,发现竟然可以了。
这虽然是个小问题,但是我们作为开发的,就经常栽在小问题上,所以以后开发还得小心再小心啊!!!谨记