谁能帮助解释为什么 JNDI 应该是公开数据库/jms 等服务的首选方式?
我遇到的所有帖子都谈到了不必加载特定驱动程序管理器、受益于连接池等的优点,但这很容易通过在属性文件中指定驱动程序管理器并使用反射来实现。
连接池也可以通过 spring 或其他方式将正确的实现连接到应用程序 bean 中来实现。
那么为什么使用 JNDI 会更好呢?
最佳答案
当您必须在环境之间移动应用程序时,JNDI 真的很出色:从开发到集成再到测试到生产。如果您将每个应用服务器配置为使用相同的 JNDI 名称,您可以在每个环境中拥有不同的数据库,而不必更改您的代码。您只需拿起 WAR 文件并将其放到新环境中即可。
以下是判断此答案时需要了解的一些其他假设:
- 除了对日志的只读访问权限外,我根本无权访问部署代码的服务器。
- 编写和打包代码的人不是配置和管理服务器的人。
- 一旦 WAR 文件开始其到 PROD 的旅程,它就无法再次更改,除非回到起点。如果 WAR 被更改,QA 在测试服务器上完成的任何测试都必须重新完成。
也许您看不到这种好处,因为您是一个在本地桌面上编写代码并直接部署到生产环境的开发人员。
关于java - 为什么将 JNDI 用于数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7760712/