概念

JNDI(Java Naming and Directory Interface ),类似于在一个中心注册一个东西,以后要用的时候,只需要根据名字去注册中心查找,注册中心返回你要的东西。web程序,我们可以将一些东西(比如数据库相关的)交给服务器软件去配置和管理(有全局配置和单个web程序的配置),在程序代码中只要通过名称查找就能得到我们注册的东西,而且如果注册的东西有变,比如更换了数据库,我们只需要修改注册信息,名称不改,因此代码也不需要修改。

String jndiName= ...;

Context context = new InitialContext();

DataSource ds = (DataSourse)context.lookup(jndiName);

由来

JNDI总结

在Java开发中,使用JDBC操作数据库的四个步骤如下:

①加载数据库驱动程序(Class.forName("数据库驱动类");)

②连接数据库(Connection con = DriverManager.getConnection();)

③操作数据库(PreparedStatement stat = con.prepareStatement(sql);stat.executeQuery();)

④关闭数据库,释放连接(con.close();)

也就是说,所有的用户都需要经过此四步进行操作,但是这四步之中有三步(①加载数据库驱动程序、②连接数据库、④关闭数据库,释放连接)对所有人都是一样的,而所有人只有在操作数据库上是不一样,那么这就造成了性能的损耗。

那么最好的做法是,准备出一个空间,此空间里专门保存着全部的数据库连接,以后用户用数据库操作的时候不用再重新加载驱动、连接数据库之类的,而直接从此空间中取走连接,关闭的时候直接把连接放回到此空间之中。

那么此空间就可以称为连接池(保存所有的数据库连接),但是如果要想实现此空间的话,则必须有一个问题要考虑?

1、 如果没有任何一个用户使用连接,那么那么应该维持一定数量的连接,等待用户使用。

2、 如果连接已经满了,则必须打开新的连接,供更多用户使用。

3、 如果一个服务器就只能有100个连接,那么如果有第101个人过来呢?应该等待其他用户释放连接

4、 如果一个用户等待时间太长了,则应该告诉用户,操作是失败的。

如果直接用程序实现以上功能,则会比较麻烦,所以在Tomcat 4.1.27之后,在服务器上就直接增加了数据源的配置选项,直接在服务器上配置好数据源连接池即可。在J2EE服务器上保存着一个数据库的多个连接。每一个连接通过DataSource可以找到。DataSource被绑定在了JNDI树上(为每一个DataSource提供一个名字)客户端通过名称找到在JNDI树上绑定的DataSource,再由DataSource找到一个连接。如下图所示:

image.png

那么在以后的操作中,除了数据库的连接方式不一样之外,其他的所有操作都一样,只是关闭的时候不是彻底地关闭数据库,而是把数据库的连接放回到连接池中去。

如果要想使用数据源的配置,则必须配置虚拟目录,因为此配置是在虚拟目录之上起作用的。需要注意的是,如果要想完成以上的功能,在Tomcat服务器上一定要有各个数据库的驱动程序。

java jndi配置_java(JNDI)相关推荐

  1. java常量配置_java项目动态配置常量和peiconfig.properties配置使用详解

    java项目动态配置常量和peiconfig.properties配置使用详解 点击:2 Java工程中配置信息一般都写在 properties文件中,下面这篇文章是对java基础配置的一点学习心得整 ...

  2. java jar 配置_java jar包与配置文件的写法

    一个普通的java project,里面引用了config.properties配置文件,将项目打成Runnable jar,然后将config.properties放到打包后的jar路径下,执行该j ...

  3. java工具配置_Java™ 教程(配置实用工具)

    配置实用工具 本节介绍一些帮助应用程序访问其启动上下文的配置实用程序. 属性 Properties是作为键/值对管理的配置值,在每对中,键和值都是字符串值,键标识并用于检索值,就像变量名用于检索变量的 ...

  4. java jmx 配置_Java JMX远程调优一点就通

    原标题:Java JMX远程调优一点就通 java远程调优可采用两种方式进行连接,jmx与jstatd,此文演示如何配置jmx进行连接调优. 配置指南 配置 功能 值 备注 -Dcom.sun.man ...

  5. java log4j 配置_Java:log4j与log4j.properties的配置说明

    [来源:Java |作者:Java |时间:2007-7-20 |去论坛]--在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包- ...

  6. java mysql 配置_Java连接MySQL数据库详细分析

    一:工具 eclipse MySQL5.7 MySQL连接驱动:mysql-connector-java-5.1.44-bin.jar下载地址 二:加载驱动 2.1 在工程目录中创建lib文件夹,将下 ...

  7. java 3d 配置_Java 3D简介及安装运行

    简介 Java 3D是对Java的一个用来显示三维图形的扩展.用Java 3D编写的程序可以运行在很多不同类型的计算机或互联网上. Java 3D类库提供了比其它多数图形库更简单的接口,但仍有足够的能 ...

  8. java quartz配置_java quartz简单使用

    1.在项目里引入quartz org.quartz-scheduler quartz 2.3.0 2.quartz的简单实例 package com.example.quartz_demo; impo ...

  9. java hibernate 配置_JAVA语言之关于hibernate的核心配置

    本文主要向大家介绍了JAVA语言之关于hibernate的核心配置,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.hibernate中的核心配置文件:hibernate.rfg. ...

最新文章

  1. POJ1456贪心(set或者并查集区间合并)
  2. Java Number Math 类方法
  3. MATLAB入门(三)
  4. python堆模块_python内置堆模块
  5. 2021全球智能手机出货13.2亿部,第一依旧是他,小米苹果紧随其后
  6. python 列表自动排序_Python学习小技巧之列表项排序的示例代码分享
  7. mysql索引的创建和删除吗_MySQL索引的创建、删除和查看
  8. 博文视点云原生书单丨释放云原生技术红利
  9. (6)java的内存泄露问题
  10. day24-XSS过滤及单实例
  11. .md文件好用编辑软件分享Typora
  12. NC协议服务器端库登陆失败,NC数据库日常维护
  13. JavaScript与C#互通的DES加解密算法
  14. Redis中的TTL
  15. pid的matlab仿真,MATLAB Pid仿真实验
  16. 计算机上平方米的单位,word怎么写平方米 word中平方米的单位怎么打
  17. 在visio中不借助公式编辑器在字母上方打波浪线
  18. 网卡驱动卸载后一直安装失败的问题成功解决
  19. 手把手教你用EZDML批量生成vue-element-admin前端页面代码
  20. 「历时6个月招聘数据收集」一份Python招聘分析报告

热门文章

  1. 我们怎样做父亲 鲁迅
  2. 自定义dialog弹窗html,Html5自定义dialog
  3. 【设计模式】观察者模式Observe(Java)
  4. 西电挑战杯文案编写要求
  5. 马斯克最大的挑战是什么?
  6. Python学习笔记 第二部分 - 正则表达式 与 爬虫小实例(抓取豆瓣电影中评分大于等于8分的影片)...
  7. GameFramework教程✨一、本专栏概述及注意事项
  8. 35前一事无成(1)
  9. 华侨大学计算机学院保研情况,华侨大学计算机科学与技术学院导师简介:张国亮...
  10. 功能测试(点点点)混了3年,7月接到了被裁员的消息