首页 > 解决方案 > 我们可以在tomcat中部署两个同名的war文件吗?

问题描述

有没有可能我们可以在tomcat中部署两个同名的war文件(同一个项目)。

我有一个应用程序,它的 URLapp/customer/123向我返回了客户详细信息,现在我想提供app/v1/customer/123应该给我客户详细信息的版本。这通常是版本维护。还有其他的版本维护方法,在下面的帖子中介绍 维护 api 版本的最佳方法

但我又必须写很多代码。我正在寻找可以提供即时解决方案的东西(稍后我可以遵循最佳实践并进行更改)我在想我是否可以通过更改来部署两个具有相同名称的战争文件,<url-pattern>/v1/*<url-pattern>以便客户可以通过在 URL 中添加版本(这将防止更改整个 URL)

我也试过了,但这不起作用 如何在tomcat中部署外部webapp?

有什么办法可以做到这一点?

标签: tomcatweb-applicationsweb.xml

解决方案


1)您可以在不同的上下文路径上部署不同版本的应用程序,如下所示:

apache-tomcat/conf/Catalina/localhost/app#v1.xml:

<Context docBase="c:\path\to\v1\app.war" path="/app/v1"/>

可通过http://localhost:8080/app/v1访问

apache-tomcat/conf/Catalina/localhost/app#v2.xml:

<Context docBase="c:\path\to\v2\app.war" path="/app/v2"/>

可通过http://localhost:8080/app/v2访问

2)您可以在不同的上下文路径上多次部署单个war文件,如下所示:

apache-tomcat/conf/Catalina/localhost/app#v1.xml:

<Context docBase="c:\path\to\app.war" path="/app/v1"/>

可通过http://localhost:8080/app/v1访问

apache-tomcat/conf/Catalina/localhost/app#v2.xml:

<Context docBase="c:\path\to\app.war" path="/app/v2"/>

可通过http://localhost:8080/app/v2访问

有关详细信息,请参阅Apache Tomcat 上下文配置文档


推荐阅读