好的,通常我们一直在为每个 Web 应用程序安装一个 Tomcat 7 实例,因为尽管它们几乎是相同的代码库(实际上是相同的应用程序),但我们无法承受让一个应用程序因更改而停机,这会影响其他客户。
但是安装这么多的Tomcat已经过时了。因此,我们认为我们会将 Tomcat 的数量减少到每个客户组一个。
无论如何,我们的 Hibernate 配置使用 JNDI,我想我会为每个 Tomcat 组创建一个通用 context.xml 文件并将其存储在其中,CATALINA_BASE/conf/context.xml
以便同一组下的所有应用程序可以共享相同的生产数据库数据源。
我会在我的本地 Tomcat 上做同样的事情进行开发,只是让那里的上下文包含开发数据源信息。这样我就可以将战争部署到生产服务器或本地开发服务器,而不必更改上下文文件。
我假设如果我保持以下方案,我应该能够实现这一目标。
CATALINA_BASE/conf/context.xml # either contains production or dev connections
CATALINA_BASE/conf/Catalina/localhost/ # EMPTY - don't want apps overwriting data sources
CATALINA_BASE/webapps/<webapp>/META-INF/context.xml # almost BLANK.
到目前为止,这似乎有效(仅使用一个 Web 应用程序进行了测试),但看起来 context.xml<webapp>/META-INF
必须包含有效的上下文和上下文路径。这是为什么?每个网络应用程序的路径是否必须不同?目前,该文件中没有连接信息(仅在 中conf/context.xml
)。
最重要的是,我希望每个 Web 应用程序在获取数据库连接信息的地方都“哑巴”,这样我就可以将战争文件放在任何地方,它们会自动连接起来。
感谢您的任何建议。