浅析JNDI数据源/ConnectionPool三者

  

最近有个用户量5 w-10w的网络应用,频繁导致weblogic崩溃,让运维组很难受。

,,通过几天跟踪系统日志和weblogic运行状况,发现报错的姿势有很多,其中对定位问题比较关键的报错:

ExecuteThread:“496”队列:“weblogic.kernel。默认的(自调优)beenbusy工作alt=" 712 "秒"浅析JNDI数据源/ConnectionPool三者”>

,,数据源:数据源是在JDBC2.0中引入的一个概念;

,,在JDBC扩展包中定义了Java.sql。数据源接口,它负责建立与数据库的连接;

,,在应用程序访问数据库是不必编写连接数据库的代码,可直接从数据源获得数据库连接。

,,ConnectionPool :在数据源中初始化建立了多个数据库连接,这些数据库连接保存在连接池(ConnectionPool)中。

,,Java程序访问数据库时,只需从连接池中取出空闲状态的数据库连接,当访问结束时,将数据库连接返回给连接池。

,:,JNDI  (Java命名和目录接口)Java命名与目录接口;

,,为开发人员提供了查找和访问各种命名和目录服务的通用,统一的接口。

,,其实可以将JNDI理解为一种对象和名字绑定的技术,即指定一个资源名称,将该名称与某一资源或服务相关联。

,,结合图和上面的简述,数据层关键性对象都已展露无遗,同样也很容易理解。

,,JNDI避免了程序与数据库之间的紧耦合,使应用更加易于配置,易于部署。

回到顶部

2只配置JNDI数据源的方式和使用

,,weblogic上配置JNDI为图形界面,操作起来很方便,而且那是运维组的事情,术业有专攻。

,,这里我拿Tomcat为例(开发时你也不可能在本机装个weblogic调试吧),简述下配置JDNI的几种方式:

。全局使用:Tomcat的配置文件夹下的上下文。xml,配置文件中添加:

浅析JNDI数据源/ConnectionPool三者

 & lt; Resource  name=" JNDI/db_test ",,,
  ,,,,,,,,,,,auth=叭萜鳌?,,
  ,,,,,,,,,,,type=" javax.sql.DataSource ",,,
  ,,,,,,,,,,,driverClassName=癱om.mysql.jdbc.Driver”,,,
  ,,,,,,,,,,,url=" jdbc: mysql://localhost: 3306/db_test”,,,
  ,,,,,,,,,,,用户名=案?,,
  ,,,,,,,,,,,密码为“123456”,,,
  ,,,,,,,,,,,maxActive=?0”,,,
  ,,,,,,,,,,,maxIdle=?0”,,,
  ,,,,,,,,,,,maxWait=" 10000 "/祝辞

浅析JNDI数据源/ConnectionPool三者

b。局部使用:Tomcat的配置文件夹下服务器。xml的& lt; host>标签内添加:

浅析JNDI数据源/ConnectionPool三者

 Context 路径="/demo_jndi ", docBase="/demo_jndi "祝辞,,
  ,,& lt; Resource ,
  ,,,,name=" jndi/db_test ",,
  ,,,,type=" javax.sql.DataSource ",,
  ,,,,driverClassName=癱om.mysql.jdbc.Driver”,,
  ,,,,maxIdle=?”,,
  ,,,,maxWait=" 5000 ",,
  ,,,,用户名=案?,
  ,,,,密码为“123456”,,
  ,,,,url=" jdbc: mysql://localhost: 3306/db_test”,,
  ,,,,maxActive=4/祝辞,,& lt;/Context> 

浅析JNDI数据源/ConnectionPool三者

, c。局部使用:应用,META-INFO下新建上下文。xml添加:

浅析JNDI数据源/ConnectionPool三者

 & lt; ? xml  version=" 1.0 ",编码=" utf - 8 " ?祝辞,,& lt; Context>,,
  ,,,& lt; Resource  name=" jndi/db_test ",,,
  ,,,,,,,,,,,,,,,auth=叭萜鳌?,,
  ,,,,,,,,,,,,,,,type=" javax.sql.DataSource ",,,
  ,,,,,,,,,,,,,,,driverClassName=癱om.mysql.jdbc.Driver”,,,
  ,,,,,,,,,,,,,,,url=" jdbc: mysql://localhost: 3306/db_test”,,,
  ,,,,,,,,,,,,,,,用户名=案?,,
  ,,,,,,,,,,,,,,,密码为“123456”,,,
  ,,,,,,,,,,,,,,,maxActive=?0”,,,
  ,,,,,,,,,,,,,,,maxIdle=?0”,,,
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

浅析JNDI数据源/ConnectionPool三者