JNDI 在 Spring 和 tomcat 下的使用

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

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 应用程序开发提供集成的框架。

    948 引用 • 1460 回帖
  • 数据源
    4 引用 • 3 回帖

相关帖子

欢迎来到这里!

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

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