相关疑难解决方法(0)

如何在Tomcat中为Web应用程序提供上下文配置?

我有一个Web应用程序,它依赖于在安装后配置的一些资源和参数,如JDBC连接.

我提出的是在部署应用程序时提供由Tomcat META-INF/context.xml复制[engine-name]/[server-name]/[app-name].xml的内容.这样我所提供的是一个war文件,可以复制到appBase文件夹(webapps).Tomcat的文档如果有这样的文件,它将不会被覆盖,这真的很棒,因为部署后所做的更改不会丢失.

但是这里有一个微妙的问题:由于我们通过复制到webapps目录来部署应用程序,因此Tomcat将首先卸载现有应用程序以及配置文件.这样,配置文件将被丢失/覆盖,这是不可取的.据我所知,Tomcat 不会修改此行为.

问题是:有没有办法通过以Tomcat不会删除现有配置文件的方式安装应用程序来解决此问题.或者,有更好的方法来打包应用程序吗?

请注意,我们不希望将autoDeploy设置为false,并且我们不能使用人工干预进行安装(使用Tomcat Manager Web应用程序排除).

如果我从.war文件中获取配置文件并将其单独复制[engine-name]/[server-name]/[app-name].xml,Tomcat仍会将其与我的应用程序关联,并在复制新的.war文件后将其删除.

另一个假设是:我们事先并不知道配置的值.我们将仅提供样本配置(占位符,如果您愿意),而实际配置将在稍后的某个时间执行(不一定在安装时间内).

谢谢

java tomcat java-ee

49
推荐指数
3
解决办法
8万
查看次数

Tomcat上下文管理

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html上的tomcat 6.0文档说:

仅当应用程序中不存在应用程序$CATALINA_BASE/conf/[enginename]/[hostname]/文件/META-INF/context.xml内的单个文件中的上下文文件时.如果Web应用程序打包为WAR,/META-INF/context.xml则将复制并重$CATALINA_BASE/conf/[enginename]/[hostname]/命名以匹配应用程序的上下文路径.一旦此文件存在,如果/META-INF/context.xml在主机的appBase中放置了一个带有较新版本的新WAR,则不会替换它.

不过我注意到,如果你在webapp目录提出了新的战争的文件中,context.xmlMETA-INF目录取代context.xml$CATALINA_BASE/conf/[enginename]/[hostname].

是否有任何配置可确保context.xml$CATALINA_BASE/conf/[enginename]/[hostname]/部署新war文件时不会覆盖in .

编辑:我正在使用autodeploy ="true"从JoseK的评论中,我了解当tomcat看到新的war文件时,它会取消使用旧的应用程序(导致删除上下文文件)并部署新的war文件(导致创建新的战争文件).在这种情况下,tomcat文档中的上述信息不是相关的.新问题是否可能出现以上情况?

java tomcat

8
推荐指数
1
解决办法
1780
查看次数

标签 统计

java ×2

tomcat ×2

java-ee ×1