不确定这两个是否可以比较,请耐心等待。但是(在JRuby应用程序中)运行类似于:
的配置的优势是什么?production:
adapter: jdbc
encoding: utf8
jndi: java:comp/env/app
pool: 200
与
production:
adapter: jdbcmysql
encoding: utf8
database: tgc
#socket: /var/lib/mysql/mysql.sock
host: localhost
port: 3306
username: mysql
password: notarealpassword
比另一个更灵活吗?我能用JNDI更好地调整吗?我问的原因是因为当我使用上面的JNDI版本时,我的Resque工作者无法访问数据库。我必须使用后一种配置才能正常工作。
答案 0 :(得分:2)
JNDI将数据库配置抽象到应用服务器中。优点包括能够在不改变应用程序本身的情况下,使用不同的DB和/或数据库特性在服务器上部署相同的应用程序。
这通常更多的是政策/管理问题而不是其他任何问题 - 以这种方式隔离DB内容可以在管理方面提供更大的灵活性;如果没有应用程序(必然)知道,事情可以重新开始。 (当然,它并不总是像现实生活中那样工作。)如果管理DB /服务器的人与编写/部署应用程序的人不同,JNDI可能会非常有帮助。
这种抽象在其他方面是可管理的--Rails使用DB配置文件,Spring可能使用特定于服务器的配置文件,系统属性等等。差异不太技术化,管理程度更高。