我正在开发一个部署在 Tomcat 容器中并访问来自不同供应商(Oracle、MS SQL、DB2)的多个数据库的遗留 Java Web 应用程序。目前,连接是通过 Oracle JDBC-ODBC 桥驱动程序建立的,并且数据源是在操作系统级别(Windows Server 2008)配置的。
我的团队最近建议迁移到特定于供应商的 JDBC4 驱动程序(顺便说一句,它可用于所有使用的数据库),但尽管在性能和功能方面众所周知的缺点以及 Oracle 在其网站上明确声明 JDBC-ODBC 桥的事实不适合生产,如果没有其他驱动程序可用,这是最后的手段,我们面临来自当前开发人员和负责操作系统的团队的一些严重阻力。
有人告诉我,其中一项要求是能够在运行时重新配置数据库连接。目前,这是通过在应用程序运行时编辑 Windows ODBC 工具中配置的数据源来完成的。据我所知,这是容器管理 (JNDI) 数据源无法实现的。而且这听起来对我来说相当危险,因为应用程序在重新配置过程中处于不一致的状态。
我现在的问题是,在运行时重新配置数据源是否是一种建议的做法,如果是这样,我们有什么方法可以使用本世纪的技术来做到这一点,即 JDBC4 over JNDI?