9.JNDI连接池及总结

吐血总结!!!


第一步:

在这里插入图片描述
在tomcate自动生成的context.xml中添加如下代码:

<!-- 配置连接池信息 -->
      <Resource name="emp" auth="Container" type="javax.sql.DataSource"
    maxActive="10" maxIdle="3" maxWait="10000" username="root" password="cuichen975541045"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/rentcar"/>

在这里插入图片描述

第二步.

右键新项目,在java-ee tools中选择Update EAR Lirbries,会在WebContent中的WEB-INF下创建web.xml
在这里插入图片描述
在web.xml中输入如下代码:

  <!-- 配置连接池信息 -->
<resource-ref>
	<res-ref-name>emp</res-ref-name>
	<res-type>javax.sql.DataSource</res-type>
	<res-auth>Container</res-auth>
</resource-ref>

在这里插入图片描述

第三步.

在工具类DbUtil中的静态代码块static{}中写入如下代码:

	static{
	
		try {
			//获取数据源的对象
			Context ct = new InitialContext();
			//获取数据源,java:comp/env/是固定的,后面的是自定义的名字
			DataSource ds = (DataSource) ct.lookup("java:comp/env/emp");
			//从数据源中获取一个连接即可
			con = ds.getConnection();
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

PS:
java:comp/env/是固定的,后面的是自定义的名字,但必须和context.xml中设置的name名字一致!!!


如果配置不当,服务会崩溃,所有程序都无法运行!!!

自救方法:

删除Servers项目,关闭正在运行的服务并删除,重新创建Servers项目.重新进行上面的配置
1.直接删除
在这里插入图片描述

2.关闭并删除
在这里插入图片描述


JDBC和JNDI连接池和DBCP连接池:

JNDI连接池:(Java Naming and Directory Interface,Java命名和目录接口)
java获取tomcat服务资源的一种技术
在这里插入图片描述

JNDI不单单是用来连接数据库的,它是通过命名服务来找到数据库并返回数据库连接,当然JNDI还可以管理当前应用服务器上的其他资源,如网页,文件等,它用来连接数据库时和JDBC最大的区别就是它是通过应用服务器配置(如Tomcat)的配置文件context.xml来找数据库驱动的,其次就是JDBC连接能承受的同时请求数太低了,JNDI连接池连接与之相比会好很多。

DBCP连接池(javaSE连接池)
在这里插入图片描述

JDBC:(JAVA操作数据库连接)
通过java程序去找数据库驱动,然后来连接数据库。是java亲自去连数据库。
在这里插入图片描述

JDBC和JNDI总结:

  • 1.请求资源的主动性不一样。JDBC是通过java程序主动去连接数据库获得连接,而JNDI是通过请求命名服务器返回数据库连接。
  • 2.功能范围不一样。JDBC只能用来做一件事那就是连接数据库,而命名JNDI除了能和JDBC做同样的事以外还能管理当前应用服务器上的其他资源,如网页,文件等
  • 3.请求连接数不同.JNDI连接池数高于JDBC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值