zoukankan      html  css  js  c++  java
  • 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避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。

  • 相关阅读:
    背包问题
    计蒜客lev3
    线段树BIT操作总结
    图论题收集
    Codeforces Round #607 (Div. 2) 训练总结及A-F题解
    2-sat 学习笔记
    洛谷 P3338 【ZJOI2014】力/BZOJ 3527 力 题解
    $noi.ac$ #51 array 题解
    洛谷 P3292 【SCOI2016】幸运数字/BZOJ 4568 幸运数字 题解
    洛谷 P5283 【十二省联考2019】异或粽子 题解
  • 原文地址:https://www.cnblogs.com/saixing/p/6730295.html
Copyright © 2011-2022 走看看