最近有个用户量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,配置文件中添加:
& 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 "/祝辞
b。局部使用:Tomcat的配置文件夹下服务器。xml的& lt; host>标签内添加:
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>
, c。局部使用:应用,META-INFO下新建上下文。xml添加:
& 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三者