我工作的公司托管了一些 Java Web 应用程序。我们在同一个盒子上有生产站点和演示站点。演示站点通常是在生产中看到的内容的副本,只有资源指向演示资源(使用 javax.sql.DataSource 的数据库和领域)。出于安全考虑,appBase 没有在 webapp 目录中定义,而是在服务器的其他地方定义。
我正在将这些应用程序从 Tomcat 5 迁移到 Tomcat 7。Tomcat 5 服务器具有在 server.xml 中定义的所有上下文。这非常方便,因为我只需要将文件复制到主机定义的目录中,生产主机、演示主机或两者都可以,并且 context.xml 文件将被 server.xml 覆盖。
我为 Tom7 阅读的文档强调不再推荐这种将上下文放置在 server.xml 中的安排。
设置服务器的最佳方法是什么,以便我可以覆盖 META-INF 目录中包含的 context.xml。我希望能够将 Web 应用程序从测试(不是 jar 文件)复制到正确的目录(生产或演示),服务器将分别使用生产数据库或演示数据库。
- 我在 conf/Catalina/'host' 目录中定义了 context.xml,将其重命名为 ROOT.xml。我启动了服务器,它加载了 ROOT.xml 文件,当我测试它时,我收到了“404”。
- 我将 conf/Catalina/'host' 目录中的 ROOT.xml 更改为 context.xml.default 并重新启动服务器。这似乎对主机没有影响;它使用了 META-INF/context.xml 中定义的数据定义。
- 我从 conf/Catalina/'host' 目录中删除了 context.xml.default 并重新启动了服务器。正如预期的那样,它使用了 META-INF/context.xml 中定义的数据定义。
谢谢你的帮助。