相关疑难解决方法(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会在重新部署时替换context.xml?

文档说如果你有一个上下文文件:

$CATALINA_HOME/conf/Catalina/localhost/myapp.xml
Run Code Online (Sandbox Code Playgroud)

它不会被上下文文件替换:

mywebapp.war/META-INF/context.xml
Run Code Online (Sandbox Code Playgroud)

它写在这里:http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

仅当$ CATALINA_BASE/conf/[enginename]/[hostname] /中的应用程序不存在上下文文件时,才在应用程序文件内的/META-INF/context.xml中的单个文件中.

但是每当我重新部署战争时,它都会用/META-INF/context.xml替换这个myapp.xml!

它为什么这样做,我该如何避免呢?

感谢名单

deployment tomcat tomcat6

18
推荐指数
2
解决办法
1万
查看次数

Tomcat更新了context.xml但不应该

Tomcat文档(http://tomcat.apache.org/tomcat-6.0-doc/config/context.html)

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

粗体文字很清楚.但我通知不是真的.(我需要这个行为)

以下是步骤:

  1. 带有context.xml的aaa.war包含在META-INF中
  2. 复制到webapps.tomcat部署.文件conf\Catalina\localhost\aaa.xml确定
  3. 通过更改META-INF/context.xml来更改aaa.war
  4. 复制到webapps
  5. 文件conf\Catalina\localhost\aaa.xml已更改!!!

怎么了?它是一个错误还是一个隐藏的功能?

背景 - 我想解决的问题:

配置独立构建和安装.我厂运送战争档案.客户端使用自己的设置来配置他的Tomcat.当我发布新版本时,我只是在没有配置的情况下交付战争,在部署时它将使用客户端特定的配置.

通过文档,最好的地方是context.xml但是如果每次都覆盖它根本就没用.(如果必须创建新的可交付成果,为什么我会使用JNDI和这样的东西?在构建时改变一些东西并不是一个很大的配置优势.)

环境:windows,tomcat 6.0.33

java tomcat jndi context.xml

5
推荐指数
1
解决办法
1962
查看次数

标签 统计

tomcat ×3

java ×2

context.xml ×1

deployment ×1

java-ee ×1

jndi ×1

tomcat6 ×1