`
lige239141
  • 浏览: 172148 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JNDI的作用

    博客分类:
  • Java
 
阅读更多

NDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。 
那么,JNDI到底起什么作用? 

要了解JNDI的作用,我们可以从“如果不用JNDI我们怎样做?用了JNDI后我们又将怎样做?”这个问题来探讨。 

没有JNDI的做法: 

Connection conn=null;
try {
  Class.forName("com.mysql.jdbc.Driver",
                true, Thread.currentThread().getContextClassLoader());
  conn=DriverManager.getConnection("jdbc:mysql://MyDBServer?user=qingfeng&password=mingyue");
  
  ......
  conn.close();
} 
catch(Exception e) {
  e.printStackTrace();
} 
finally {
  if(conn!=null) {
    try {
      conn.close();
    } catch(SQLException e) {}
  }
}

 
程序员开发时,知道要开发访问MySQL数据库的应用,于是将一个对 MySQL JDBC 驱动程序类的引用进行了编码,并通过使用适当的 JDBC URL 连接到数据库。 
就像以下代码这样: 

这是传统的做法,也是以前非Java程序员(如Delphi、VB等)常见的做法。这种做法一般在小规模的开发过程中不会产生问题,只要程序员熟悉Java语言、了解JDBC技术和MySQL,可以很快开发出相应的应用程序。 

没有JNDI的做法存在的问题: 
1、数据库服务器名称MyDBServer 、用户名和口令都可能需要改变,由此引发JDBC URL需要修改; 
2、数据库可能改用别的产品,如改用DB2或者Oracle,引发JDBC驱动程序包和类名需要修改; 
3、随着实际使用终端的增加,原配置的连接池参数可能需要调整; 
4、...... 

解决办法: 
程序员应该不需要关心“具体的数据库后台是什么?JDBC驱动程序是什么?JDBC URL格式是什么?访问数据库的用户名和口令是什么?”等等这些问题,程序员编写的程序应该没有对 JDBC 驱动程序的引用,没有服务器名称,没有用户名称或口令 —— 甚至没有数据库池或连接管理。而是把这些问题交给J2EE容器来配置和管理,程序员只需要对这些配置和管理进行引用即可。 

由此,就有了JNDI。 

用了JNDI之后的做法: 
首先,在在J2EE容器中配置JNDI参数,定义一个数据源,也就是JDBC引用参数,给这个数据源设置一个名称;然后,在程序中,通过数据源名称引用数据源从而访问后台数据库。 

具体配置详见:http://pengshao.iteye.com/admin/blogs/1672655

分享到:
评论

相关推荐

    解释什么是JNDI的意义和作用

    什么是JNDI,JNDI到底有什么作用!

    Java EJB简单例子.rar

    Java EJB简单例子,这是HelloWorldBean的Home接口,它是EJB对象的生成库,无状态会话(将在下一个实例中具体讲解)Bean,这个接口是客户端与EJB对象相互作用的中间途径,通过Client触发调用Bean方法:  try {  //...

    服务器端接口编程.pptx

    第 13 章 服务器端接口编程 服务器端接口编程全文共45页,当前为第1页。 01 13.1 JNDI 数据源配置 02 03 04 13.2 Log4J 与 SLF4J 13.3 MyBatis vs Hibernate 13.4 ... (1)配置数据源 根据配置的作用域不同,JNDI 配置

    吉林大学软件学院服务计算概论第一次作业

      服务计算第1次作业 一、实验题目 对数据库的访问:利用JNDI连接两种不同的数据库...(2) 阐述清楚数据源配置在连接过程中的作用; (3) 任选两种数据库; (4) 逻辑清楚,表述完整、准确; (5) 要有必要截图。

    金蝶容器运维指南.zip

    文档详细描述了笔者在使用金蝶容器的经过,对于金蝶容器的运维和使用具有良好的指导作用,并且,文档也阐述了JNDI的基本含义和作用。对于JNDI的理解也有很好的促进作用。

    JAVA上百实例源码以及开源项目源代码

    (2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。本规范尝试满足...

    JAVA上百实例源码以及开源项目源代码 java开源包2

    (2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。本规范尝试满足...

    毕业论文-基于JSP的电商管理系统的设计与实现

    采用 JNDI 方式与后台数据库进行连接。实现了能够存储和管理大量的数据、承运承储的 添加、订单的处理等功能并且保证客户和商家的权益的电商管理系统。通过对本课题的实 现发现电子商务在现代企业管理中的作用和地位...

    基于JSP的电商管理系统的设计与实现-毕业论文

    采用 JNDI 方式与后台数据库进行连接。实现了能够存储和管理大量的数据、承运承储的 添加、订单的处理等功能并且保证客户和商家的权益的电商管理系统。通过对本课题的实 现发现电子商务在现代企业管理中的作用和地位...

    Grails 中文参考手册

    3.3.2 JNDI数据源 3.3.3 自动数据库移植 3.4 外部配置 3.5 定义版本 4. 命令行 4.1 创建Gant脚本 4.2 可复用的Grails脚本 4.3 脚本中的事件 4.4 Ant和Maven 5. 对象关系映射(GORM) 5.1 快速指南 5.1.1 基本的CRUD ...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. JPA 2.4.3. 异步...

    Java测试新技术TestNG和高级概念.part1

    4.3 Java命名和目录接口(JNDI) 4.4 Java数据库连接(JDBC) 4.5 Java事务API(JTA) 4.6 Java消息服务(JMS) 4.7 Java持久API(JPA) 4.8 Enterprise JavaBeans 3.0(EJB3) 4.9 Java API for XML Web Services...

    Java测试新技术TestNG和高级概念.part2

    4.3 Java命名和目录接口(JNDI) 4.4 Java数据库连接(JDBC) 4.5 Java事务API(JTA) 4.6 Java消息服务(JMS) 4.7 Java持久API(JPA) 4.8 Enterprise JavaBeans 3.0(EJB3) 4.9 Java API for XML Web Services...

    UIVI:一个URL导航器-开源

    UIVI是一个URL导航器,具有诸如打开,创建和更新文档,复制和粘贴等功能。它支持本地文件,FTP,JMS,JNDI,ZIP文件以及大多数功能:WebDAV客户端可以最大程度地发挥作用皮克塞特(pincette.biz

    jsp servlet 入门学习资料-新手一看就懂

    8.2.7 JNDI服务器主机 8.2.8 HTTP服务的发布目录 8.3 WebLogic的安装和使用 8.3.1 软硬件要求 8.3.2 安装和启动 8.4 WebLogic的配置 8.4.1 系统级参数的设置 8.4.2 将WebLogic作为HTTP服务器使用 8.4.3 使用...

    jsp从入门到高级编程

    8.2.7 JNDI服务器主机 8.2.8 HTTP服务的发布目录 8.3 WebLogic的安装和使用 8.3.1 软硬件要求 8.3.2 安装和启动 8.4 WebLogic的配置 8.4.1 系统级参数的设置 8.4.2 将WebLogic作为HTTP服务器使用 8.4.3 使用...

    千方百计笔试题大全

    13、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 9 14、编程题: 用最有效率的方法算出2 乘以8 等於几? 9 15、有没有length()这个方法? String 有没有length()这个方法? 9 16、在JAVA ...

    java面试宝典

    13、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 9 14、编程题: 用最有效率的方法算出2 乘以8 等於几? 9 15、有没有length()这个方法? String 有没有length()这个方法? 9 16、在JAVA ...

Global site tag (gtag.js) - Google Analytics