分享

5.2.1 使用JNDI数据源

 liuguichuan 2014-11-24

5.2  配置数据源

无论使用什么形式的Spring DAO支持类,都需要配置对数据源的引用。Spring提供了多个选项用于在Spring程序里配置数据库,其中包括:

由JDBC驱动程序定义的数据源

由JNDI查询的数据源

连接池的数据源

对于已经准备进行发布的程序,我建议使用从连接池获取连接的数据源。如果可能,我更乐于通过JNDI从程序服务器获取连接池里数据源。记住这一点,下面我们来看一看如何配置Spring从JNDI获取数据源。

5.2.1  使用JNDI数据源

Spring程序经常会运行于一个JEE程序服务器里,比如WebSphere、JBoss或甚至是像Tomcat这样的Web容器。这些服务程序可以配置为通过JNDI获取数据源。以这种方式配置数据源的好处是它们完全可以在程序之外进行管理。程序本身只需要在需要访问数据库时请求数据源即可。而且,程序服务器里管理的数据源通常会被组合起来,从而具有更好的性能,并能够由系统管理员进行热切换。

利用Spring,我们可以像使用Bean一样配置一个数据源(保存在JNDI里)的引用,并且把它装配到其他类里。Spring的JndiObjectFactoryBean能够从JNDI获取任何对象(包括数据源),并且让它能够用作Spring Bean。

第11章将更详细地介绍JndiObjectFactoryBean,目前我们只需要知道下面这个JndiObjectFactoryBean能够从JNDI获取数据源:

 

属性jndiName用于指定JNDI里数据源的名称。如果只设置了jndiName属性,数据源就是由它直接指定的。但如果程序是运行于Java程序服务器里,就还需要把resourceRef属性设置为true。

当resourceRef属性为true时,jndiName会被添加java:comp/env/,从程序服务器的JNDI目录里获取数据源,因此,上例中实际使用的名称是java:comp/env/jdbc/RantzDatasource。

Spring 2.0里的JNDI数据源

通过使用jee命名空间,Spring 2.0里从JNDI获取数据源所需的XML大大简化了。像下面这样声明<beans>元素,我们就可以使用jee命名空间里的配置元素:

 
jee命名空间里的<jee:jndi-lookup>元素可以从JNDI获取对象。下面的XML等效于前面对JndiObjectFactoryBean的明确声明:
 
属性jndi-name和resource-ref直接对应于JndiObjectFactoryBean的jndiName和resourceRef。
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多