我设法以某种方式解决了这个问题。
1- 在 Tomcat的appbase 之外
的某个地方安装一个分解的WAR目录,让我们假设它在中
/usr/local/MyApp。[如果您的应用程序在未爆炸的战争中运行,则可以在此步骤中使用WAR文件而不是WAR目录。
2-将上下文配置文件复制到
[tomcat.conf]/[engine]/[hostname]目录中,我们称之为
MyApp.xml。该文件将指向应用程序的位置:
<?xml version="1.0" encoding="UTF-8"?><!-- Context configuration file for my web application --><Context docbase="/usr/local/MyApp" privileged="true" antiResourceLocking="false" antiJARLocking="false"> <Resource name="jdbc/myapp-ds" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="XXX" password="XXX" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/mydb" /></Context>
3-现在,您可以随意修改配置文件。
4-通过在/ usr / local / MyApp中复制应用程序的新版本来更新应用程序
笔记:
a)此解决方案也适用于未扩展的.war文件,但是由于我们使用Spring的Log4JConfigListener,因此不会从未爆炸的.war文件运行。Tomcat不会爆炸放在appbase(webapps)文件夹外的.war文件。
b)这种方法不会阻止您在/usr/local/MyApp/meta-
INF/context.xml中包含context.xml,因为Tomcat在此配置中不会使用它。您可以在开发环境中使用它,将.war文件转储到appbase(webapps)文件夹中。
这是我到目前为止所取得的,仍在寻找更好的解决方案。



