【问题标题】:Can we deploy two war file with same name in tomcat?我们可以在tomcat中部署两个同名的war文件吗?
【发布时间】:2023-04-07 01:51:01
【问题描述】:

有什么方法可以在tomcat中部署两个同名的war文件(同一个项目)。

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

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

我也试过了,但是没用 How to deploy external webapp in tomcat?

有什么方法可以实现吗?

【问题讨论】:

    标签: tomcat web-applications web.xml


    【解决方案1】:

    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 Context Configuration Docs

    【讨论】:

    • 需要在文件名app#v1.xml中添加#吗?
    • 如链接文档中所述,文件名必须与上下文路径匹配,而上下文路径中的“/”由配置文件名中的“#”表示。
    • 它总是采用最新版本
    • 我不确定您所说的“它总是采用最新版本”是什么意思。您能否编辑您的问题并指出 Tomcat 管理器应用程序列表显示的内容以及您希望它显示的内容? @Varun
    猜你喜欢
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2017-11-08
    • 2020-12-03
    • 1970-01-01
    • 2010-09-13
    • 2012-07-29
    • 2013-08-21
    相关资源
    最近更新 更多