【问题标题】:Deleted context on undeploy取消部署时删除的上下文
【发布时间】:2010-06-02 11:36:03
【问题描述】:

我在 tomcat 上部署了两个应用程序。对于每个应用程序,我在 $CATALINA_HOME/conf/Catalina/localhost 中定义了它们自己的上下文,其中定义了 JDBC 数据源。当我使用 ant 脚本取消部署其中一个应用程序时,该应用程序的上下文被删除,因此在下次启动 tomcat 应用程序时无法部署,因为它没有定义 JDBC 连接。这个问题有解决办法吗?

【问题讨论】:

    标签: java deployment tomcat


    【解决方案1】:

    我认为这是一个 Tomcat 错误。我提交了错误报告,但修复很复杂。

    Tomcat 可以通过 3 种方式部署应用程序,

    1. 目录,如 webapps/myapp。
    2. WAR,如 webapps/myapp.war。
    3. 上下文片段,这是您正在使用的。

    如果您使用#3,但应用程序或战争在 webapps 中,Tomcat 将与 #1 或 #2 混淆。重新部署目录或战争时,它应该删除上下文片段。

    我的解决方法是,

    1. 如果您使用目录,请将其放在 APPBASE (webapps) 以外的位置。如果您使用 WAR,请将其也放在其他地方,不要爆炸。
    2. 我们使用脚本部署我们的应用程序。在脚本中,每次取消部署应用后都会复制片段。

    这是一个用于 WAR 部署的示例片段,

    <Context docBase="/anywhere/but/webapps/myapp.war"
        swallowOutput="true" unpackWAR="false" />
    

    请注意,并非每个应用程序都在解压模式下运行。在解压模式下,您无法将任何资源作为文件从 WAR 中读取。

    【讨论】:

    • 感谢您的回复。我们已将数据库连接定义为一种资源,因此我们将尝试按照您的方式进行操作并编写脚本,该脚本将在每次取消部署后复制上下文片段,我希望它会有所帮助
    猜你喜欢
    • 2010-12-26
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多