当前位置: 代码迷 >> J2EE >> J2EE的10三种技术——JNDI
  详细解决方案

J2EE的10三种技术——JNDI

热度:290   发布时间:2016-04-17 23:20:50.0
J2EE的十三种技术——JNDI

背景:

    上一篇博客中介绍了J2EE的十三种技术之一——JDBC,主要用于提供了统一访问多种数据库的方式。这篇文章我们继续介绍J2EE的技术——JNDI。

JNDI:

     Java Naming and Directory Interface,Java命名和目录接口。作为技术规范之一,它提供了一种标准的Java命名系统接口。


    它为开发人员提供了查找和访问各种命名和目录服务通用、统一的接口,举个例子,比如我们翻书找一个知识点的时候,我们都会去看目录,通过目录的帮助,我们可以快速准确的找到所需要的东西。

    JNDI就类似于这个功能,如下图所示。




    JNDI是一种查找服务,可以用它来查找Web应用环境变量、EJBs、数据库连接池、JMS目标和连接工厂等。但不要将JNDI当作数据库使用,JNDI对象储存在内存中。

使用:

第一步:配置数据源

<?xml version="1.0" encoding="UTF-8"?><datasources><local-tx-datasource>    <jndi-name>MySqlDS</jndi-name>    <connection-url>jdbc:mysql://localhost:3306/lw</connection-url>    <driver-class>com.mysql.jdbc.Driver</driver-class>    <user-name>root</user-name>    <password>rootpassword</password><exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>    <metadata>       <type-mapping>mySQL</type-mapping>    </metadata></local-tx-datasource></datasources>


    第二步:在程序中引用

Connection conn=null;try {  Context ctx=new InitialContext();  Object datasourceRef=ctx.lookup("java:MySqlDS"); //引用数据源  DataSource ds=(Datasource)datasourceRef;  conn=ds.getConnection();  /* 使用conn进行数据库SQL操作 */  ......  c.close();} catch(Exception e) {  e.printStackTrace();} finally {  if(conn!=null) {    try {      conn.close();    } catch(SQLException e) { }  }}

总结:

 JNDI 在 J2EE 中的角色就是“交换机”、“粘合剂”。J2EE 组件在运行时间接地查找其他组件、资源或服务的通用机制。J2EE 规范要求所有 J2EE 容器都要提供 JNDI 规范的实现。JNDI避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。

  相关解决方案