JNDI的介绍和配置_jndi 指定jvm配置factory-程序员宅基地

技术标签: Java  mysql  

1 Tomcat配置JNDI资源

JNDI(Java Naming and Directory Interface),Java命名和目录接口。JNDI的作用就是:在服务器上配置资源,然后通过统一的方式来获取配置的资源。

我们这里要配置的资源当然是连接池了,这样项目中就可以通过统一的方式来获取连接池对象了。

下图是Tomcat文档提供的:

配置JNDI资源需要到<Context>元素中配置<Resource>子元素:

  1. name:指定资源的名称,这个名称可以随便给,在获取资源时需要这个名称;
  2. factory:用来创建资源的工厂,这个值基本上是固定的,不用修改;
  3. type:资源的类型,我们要给出的类型当然是我们连接池的类型了;
  4. bar:表示资源的属性,如果资源存在名为bar的属性,那么就配置bar的值。对于DBCP连接池而言,你需要配置的不是bar,因为它没有bar这个属性,而是应该去配置url、username等属性。

 

<Context>  

  <Resource name="mydbcp"

type="org.apache.tomcat.dbcp.dbcp.BasicDataSource"

factory="org.apache.naming.factory.BeanFactory"

username="root"

password="123"

driverClassName="com.mysql.jdbc.Driver"    

url="jdbc:mysql://127.0.0.1/mydb1"

maxIdle="3"

maxWait="5000"

maxActive="5"

initialSize="3"/>

</Context>  

<Context>  

  <Resource name="myc3p0"

type="com.mchange.v2.c3p0.ComboPooledDataSource"

factory="org.apache.naming.factory.BeanFactory"

user="root"

password="123"

classDriver="com.mysql.jdbc.Driver"    

jdbcUrl="jdbc:mysql://127.0.0.1/mydb1"

maxPoolSize="20"

minPoolSize ="5"

initialPoolSize="10"

acquireIncrement="2"/>

</Context>  

 

2 获取资源

  配置资源的目的当然是为了获取资源了。只要你启动了Tomcat,那么就可以在项目中任何类中通过JNDI获取资源的方式来获取资源了。

下图是Tomcat文档提供的,与上面Tomcat文档提供的配置资源是对应的。

 

获取资源:

  1. Context:javax.naming.Context;
  2. InitialContext:javax.naming.InitialContext;
  3. lookup(String):获取资源的方法,其中”java:comp/env”是资源的入口(这是固定的名称),获取过来的还是一个Context,这说明需要在获取到的Context上进一步进行获取。”bean/MyBeanFactory”对应<Resource>中配置的name值,这回获取的就是资源对象了。

 

        Context cxt = new InitialContext();

        DataSource ds = (DataSource)cxt.lookup("java:/comp/env/mydbcp");

        Connection con = ds.getConnection();

        System.out.println(con);

        con.close(); //较第二种方便,推荐使用这种

        Context cxt = new InitialContext();

            Context envCxt = (Context)cxt.lookup("java:/comp/env");

        DataSource ds = (DataSource)env.lookup("mydbcp");

        Connection con = ds.getConnection();

        System.out.println(con);

        con.close();

 

  上面两种方式是相同的效果。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_26514509/article/details/85200664

智能推荐

QT带多选的下拉框MultiSelectComboBox_qt combobox设置多选下拉框-程序员宅基地

文章浏览阅读569次。带多选的下拉框QCombox_qt combobox设置多选下拉框

工作中遇到的hive常见报错及问题_hivesql常见报错-程序员宅基地

文章浏览阅读1.6w次。1,执行#hive命令进入Hive CLI时报如下错误:Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.hadoop.hive.ql.session.SessionState...._hivesql常见报错

Oracle管理工具介绍-程序员宅基地

文章浏览阅读1.7k次。Oracle_oracle管理工具

外贸人用远程工具进行跟单的详细操作_线上跟单操作-程序员宅基地

文章浏览阅读456次。大多了外贸企业为了能保证公司的正常运作,是允许员工远程办公甚至居家办公的。那么作为外贸人员如何用远程软件跟单?怎么用远程软件进行跟单操作?_线上跟单操作

学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业-程序员宅基地

文章浏览阅读9次。1网页简介:此作品为学生个人主页网页设计题材,学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业2.网页编辑等任意html编辑软件进行运行及修改编辑等操作)。3.知识应用:技术方面主要应用了网页知识中的: Div+CSS、鼠标滑过特效、Table、导航栏效果、Banner、表单、二级三级页面等,视频、 音频元素 、Flash,同时设计了Logo(源文件)所需的知识点。一套合格的网页应该包含(具体可根据个人要求而定)...

纵横CW大鹏无人机地面站航线规划方法_纵横地面站-程序员宅基地

文章浏览阅读4.2k次,点赞4次,收藏34次。纵横CW大鹏无人机地面站航线规划方法_纵横地面站

随便推点

JVM判断对象是否存活之引用计数法、可达性分析_可达性分析和引用计数-程序员宅基地

文章浏览阅读446次。前言JVM有两种算法来判断对象是否存活,分别是引用计数法和可达性分析算法,针对引用计数法STW不足、内存消耗等问题下可依赖三色标记法解决。引用计数法概念对象中添加一个计数器,每当有一个地方引用它,计数器就加 1;如果引用失效,计数器就减 1;任何时候计数器为 0 的对象就是不可能再被使用的。优点这个方法实现简单,效率高。缺点很难解决对象之间相互循环引用,循环引引用会导致对象无法被回收,最终会导致内存泄漏及内存溢出。可达性分析概念通过一_可达性分析和引用计数

c++可视化编程_从bug看11种编程语言演化史,果然如今Python最流行-程序员宅基地

文章浏览阅读140次。选自Global App Testing作者:Nick Roberts机器之心编译参与:杜伟、戴一鸣自 2008 年创办以来,Stack Overflow 致力于为所有类型的开发者提供帮助,开发者们也提出了涵盖所有开发领域的大量问题。但是,哪些问题是开发者不得不向 Stack Overflow 寻求解决的呢?本文作者通过对十一年来人们在 Stack Overflow 上提问进行了词云统计,通过错误..._c++可视化编程还流行吗

Zenmap 报'utf8' codec can't decode byte 0xc0 in position 0: invalid start byte错误部分解决方案_utf-8' codec can't decode byte 0xc0 in position 0:-程序员宅基地

文章浏览阅读9.1k次,点赞4次,收藏11次。错误样式:'utf8' codec can't decode byte 0xc0 in position 0: invalid start byte错误原因:报这个错误提示的意思我理解的是存在中文无法解读,因为我没有输入中文,所有推测可能是当前用户的user文件夹为中文用户所拥有,在访问一些文件时存在中文的路径无法访问,很多的应用都是这样,不支持访问中文路径,这个算是一个比较常见的一个报错..._utf-8' codec can't decode byte 0xc0 in position 0: invalid start byte

11个案例讲透 Python 函数参数_**表示可变参数,通常使用**kw-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏23次。大家好,今天给大家分享一下明哥整理的一篇 Python 参数的内容,内容非常的干,全文通过案例的形式来理解知识点,自认为比网上 80% 的文章讲的都要明白,如果你是入门不久的 python 新手,相信本篇文章应该对你会有不小的帮助。接下来是正文。_**表示可变参数,通常使用**kw

idea配置tomcat无法apply的跳坑经历_idea中点击apply没有反应-程序员宅基地

文章浏览阅读4.3k次,点赞6次,收藏6次。 他妈的,真是服了,这个破问题竟然困了我好几个小时。一直在网上找没有相关的教程,又不想花太多时间翻墙,只好自己摸索这样子。 一个一个问题的排除,查看日志,都没有找到问题所在。 我都怀疑是不是软件问题,或者其他什么的了。 哎,也怪自己上课不认真吧,自己给自己挖了一个坑。 在此记录一下。 (但是说实话这里还是比较容易出错的,尤其对于那些自己为很聪明的人来说,哈哈哈)。 我..._idea中点击apply没有反应

2023年前端面试题-Html篇-程序员宅基地

文章浏览阅读60次。1、前端如何选择图片的格式?2、解释一下 浏览器的标准模式和怪异模式 (混杂模式)3、简述从输入网址到页面显示的整个过程