JNDI 在 Spring 和 tomcat 下的使用

本贴最后更新于 2123 天前,其中的信息可能已经时移俗易

1. 是什么

JNDI 是 Java 命名与目录接口(Java Naming and Directory Interface),在 J2EE 规范中是重要的规范之一。JNDI 在 J2EE 中的角色就是“交换机” —— J2EE 组件在运行时间接地查找其他组件、资源或服务的通用机制。在多数情况下,提供 JNDI 供应者的容器可以充当有限的数据存储,这样管理员就可以设置应用程序的执行属性,并让其他应用程序引用这些属性(Java 管理扩展(Java Management Extensions,JMX)也可以用作这个目的)。JNDI 在 J2EE 应用程序中的主要角色就是提供间接层,这样组件就可以发现所需要的资源,而不用了解这些间接性。

2. 为何用

程序员可以不用关心“具体的数据库后台是什么?JDBC 驱动程序是什么?访问数据库的用户名和口令是什么?”等等这些问题,而是把这些问题交给 J2EE 容器来配置和管理,程序员只需要对这些配置和管理进行引用即可。

3. 怎么用

3.1 整体思路

  1. 在在 J2EE 容器如 Tomcat 中配置一个数据源,给这个数据源设置一个名称;
  2. 在项目程序中,通过数据源名称引用这个数据源从而访问后台数据库

3.2 示例

下面在 Tomcat7.0+spring+springMVC+hibernate 项目中演示用法。

Tomcat

在 context.xml 的根节点 Context 里加入 Resource 配置

  <Resource 
	  auth="Container" 
	  driverClassName="com.mysql.jdbc.Driver"
	  maxActive="20" 
	  maxIdle="10" 
	  maxWait="10000"
	  minEvictableIdleTimeMillis="10000" 
	  name="jdbc/testing"
	  testWhileIdle="true"
	  timeBetweenEvictionRunsMillis="8000" 
	  type="javax.sql.DataSource"
	  url="jdbc:mysql://localhost:3306/easycare_zhongze?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"
	  username="root" 
	  password="root" 
	  validationQuery="select 1" />
Spring
<beans profile="testing">
	<context:property-placeholder ignore-resource-not-found="true" 
		location="classpath:properties/testing.properties"/>
	<bean id="dataSource"
		class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName" value="jdbc/demoDatasource" />
		<property name="resourceRef" value="true" />
	</bean>
	<bean id="dataSourceProxy" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
		<property name="targetDataSource" ref="dataSource"/>
   </bean>
</beans>
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 17 关注
  • 数据源
    4 引用 • 3 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...