Tomcat部署两个Spring应用的ApplicationContext与Servlet路径疑问
Tomcat下多Spring应用部署问题解答
部署场景
已在Tomcat的webapps目录中部署两个Spring应用,访问地址如下:
- http://server.com/app1
- http://server.com/app2
客户端请求通过URL中的上下文路径(app1/app2)路由至对应应用。
用户疑问
- 两个应用的ApplicationContext是否不同?
- 通过ServletRequestContext获取ApplicationContext时,会得到一个还是多个?
- 上述两个应用的Servlet路径分别是什么?
个人理解校验
你的部分理解存在偏差,逐一核对:
- ❌ 错误:二者无法在同一Tomcat的同一端口运行 → 实际完全支持同一Tomcat同一端口运行,Tomcat通过上下文路径区分不同应用
- ✅ 正确:两个应用各自拥有独立的ApplicationContext
- ✅ 正确:二者是完全独立的应用
- ✅ 正确:分别拥有独立的IOC容器
- ✅ 正确:只要Tomcat未终止,其中一个应用宕机不影响另一个正常运行
疑问解答
两个应用的ApplicationContext是否不同?
是的,完全不同。每个部署在Tomcat webapps下的应用都是独立的Web应用实例,Spring会为每个应用单独初始化专属的ApplicationContext,彼此之间相互隔离,没有共享或依赖关系。通过ServletRequestContext获取ApplicationContext时,会得到一个还是多个?
只能获取当前请求所属应用的ApplicationContext。ServletRequestContext与当前请求绑定,请求被路由到哪个应用,就只能拿到该应用的上下文,无法访问另一个应用的ApplicationContext。上述两个应用的Servlet路径分别是什么?
- app1的上下文路径为
/app1,如果应用内的DispatcherServlet映射路径为/,那么完整访问路径中/app1是上下文路径,后续的/xxx是Servlet的具体映射路径。 - app2的上下文路径为
/app2,逻辑与app1一致。
内容的提问来源于stack exchange,提问作者Tech Lover
相关产品推荐
相关产品推荐

