Tomcat 7 - 覆盖context.xml

时间:2013-03-12 17:23:14

标签: tomcat7 context.xml

我工作的公司主持一些Java Web应用程序。我们在同一个盒子上有生产站点和演示站点。演示站点通常是生产中看到的副本,只有资源指向演示资源(使用javax.sql.DataSource的数据库和Realm)。出于安全考虑,appBase未在webapp目录中定义,并且在服务器上的其他位置定义。

我正在将这些应用程序从Tomcat 5迁移到Tomcat 7. Tomcat 5服务器具有server.xml中定义的所有上下文。这非常方便,因为我只需要将文件复制到主机定义的目录,生产主机,演示主机或两者,server.xml将覆盖context.xml文件。

我为Tom7阅读的文档强调,不再推荐这种将上下文放在server.xml中的安排。

设置服务器的最佳方法是什么,以便我可以覆盖META-INF目录中包含的context.xml。我希望能够将测试(不是jar文件)中的Web应用程序复制到正确的目录(生产或演示),服务器将分别使用生产数据库或演示数据库。

  1. 我在conf / Catalina /'host'中定义了context.xml 目录,将其重命名为ROOT.xml。我启动了服务器,它已加载 ROOT.xml文件,当我测试它时,我收到了'404'。
  2. 我将ROOT.xml更改为了context.xml.default conf / Catalina /'host'目录并重新启动服务器。这个 似乎对主持人没有影响;它使用了数据定义 在META-INF / context.xml中定义。
  3. 我从conf / Catalina /'host'中删除了context.xml.default 目录并重新启动服务器。正如所料,它使用了数据 META-INF / context.xml中定义的定义。
  4. 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

通常你有版本控制下的项目,但你不喜欢在版本控制下使用live connection-password / email-smtp-password ....

因此,您在context.xml的版本控制下放置webapp/META-INF/context.xml虚拟密码,如changeme部署一个包含copyXML的网络应用程序 - webapp/META-INF/context.xml webapp/META-INF/context.xml中的属性被复制$TOMCAT_BASE/conf/Catalina/localhost/webapp.xml 如果不存在

因此,您可以在changeme部署后更改$TOMCAT_BASE/conf/Catalina/localhost/webapp.xml密码。这样你就可以肯定了

  • 实时密码永远不受版本控制和
  • 的限制
  • 部署不会覆盖实时密码。

使用TOMCAT_BASE/conf/context.xml仅用于全局配置(如果您阅读文件中的注释):

<!-- The contents of this file will be loaded for each web application -->