如何在java里获取hibernate连接池最大连接数和当前连接数

如题所述

1、获取当前连接数:(DataSource)ctx.lookup("java:comp/env/j***");返回的值类型是BasicDataSource,BasicDataSource类中的getNumActive()方法可以得到当前正在使用的连接数。所以可以(BasicDataSource)ctx.lookup("java:comp/env/j***"),然后得到正在使用的连接数。
2、tomcat目录lib下,有一个包tomcat-dbcp.jar,BasicDataSource这个类就在这个包中BasicDataSource有两个,引入如下正确的
import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
3、context.xml的配置:
<Resource name="j***" auth="Application" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/****" username="****" password="****" maxIdle="0" maxWait="5" maxActive="5"/>
4、获取hibernate连接池最大连接数XML配置

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.max_size">50</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">100</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
4、注:****请换成自己的配置
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-08-02
通过调试可以发现,(DataSource)ctx.lookup("java:comp/env/j***");返回的值类型是BasicDataSource,BasicDataSource类中的getNumActive()方法可以得到当前正在使用的连接数。

所以可以(BasicDataSource)ctx.lookup("java:comp/env/j***"),然后得到正在使用的连接数。

tomcat目录lib下,有一个包tomcat-dbcp.jar,BasicDataSource这个类就在这个包中

BasicDataSource有两个,引入如下正确的
import org.apache.tomcat.dbcp.dbcp.BasicDataSource; //正确
import org.apache.commons.dbcp.BasicDataSource; //错误
第2个回答  推荐于2016-07-29
通过调试可以发现,(DataSource)ctx.lookup("java:comp/env/j***");返回的值类型是BasicDataSource,BasicDataSource类中的getNumActive()方法可以得到当前正在使用的连接数。

所以可以(BasicDataSource)ctx.lookup("java:comp/env/j***"),然后得到正在使用的连接数。

tomcat目录lib下,有一个包tomcat-dbcp.jar,BasicDataSource这个类就在这个包中

BasicDataSource有两个,引入如下正确的
import org.apache.tomcat.dbcp.dbcp.BasicDataSource; //正确
import org.apache.commons.dbcp.BasicDataSource; //错误本回答被提问者和网友采纳
第3个回答  2015-07-29
通过调试可以发现,(DataSource)ctx.lookup("java:comp/env/j***");返回的值类型是BasicDataSource,BasicDataSource类中的getNumActive()方法可以得到当前正在使用的连接数。

所以可以(BasicDataSource)ctx.lookup("java:comp/env/j***"),然后得到正在使用的连接数。

tomcat目录lib下,有一个包tomcat-dbcp.jar,BasicDataSource这个类就在这个包中

BasicDataSource有两个,引入如下正确的
import org.apache.tomcat.dbcp.dbcp.BasicDataSource; //正确
import org.apache.commons.dbcp.BasicDataSource; //错误
第4个回答  2015-08-21
这个实在配置文件中设置的

如何在java里获取hibernate连接池最大连接数和当前连接数
1、获取当前连接数:(DataSource)ctx.lookup("java:comp\/env\/j***");返回的值类型是BasicDataSource,BasicDataSource类中的getNumActive()方法可以得到当前正在使用的连接数。所以可以(BasicDataSource)ctx.lookup("java:comp\/env\/j***"),然后得到正在使用的连接数。2、tomcat目录lib下,有一个包t...

javaweb 用hibernate做的项目,后台方法出现connection reset错误...
你这里是数据库连接关闭了,导致后面的连接使用关闭的连接无法访问数据库,报的异常。在这里我建议你首先看一下在hibernate上检查一下,是否使用数据库连接池,可以使用c3p0或者其他的都可以,如果数据库连接断掉后,他会自动重连数据库,不用我们自己管理。若是已经使用了数据库连接池就检查一下最大的连接...

spring+JPA(hibernate)+c3p0+oracle抛出异常A ResourcePool could...
我猜哦!密码过期不可能,是不是最大连接数超过oracle的限制了啊?你尝试把连接池的maxpoolsize改小点,如果5左右试试!300有点大啊

JAVA中高访问量高并发的问题怎么解决?
尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。用jprofiler等工具找出性能瓶颈,减少额外的开销。优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。优化数据库结构,多做索引,提高查询效率。统计的功能尽量做...

(J2EE)关于 proxool 连接池自动断开连接的问题
<maximum-active-time>60000<\/maximum-active-time> 这个配置的意思就是,house会自动检测每一个线程的连接时间,如果有一个线程的连接时间超过了这个配置的时间(ms),那么house会自动杀掉该线程,不管该线程是不是active的照杀不误。所以楼主隔一段时间之后,在操作就会提示connection.close()方法已经被...

java Hibernate 急!!!
id是手动分配的字段吗楼主,如果不是,merchandise.setId(4);去掉试试楼主

Spring框架中配置bean的高级属性"props"是什么作用?
<!-- 指定连接数据库连接池的初始化连接数 --> <property name="initialPoolSize" value="1"\/> <!-- 指定连接数据库连接池的连接的最大空闲时间 --> <property name="maxIdleTime" value="20"\/> <\/bean><!--配置数据库会话工厂--> <bean id="sessionFactory" class="org.springframework.orm.hibe...

源码详解系列(五) --- C3P0的使用和分析(包括JNDI)已停更
在深入学习c3p0的使用和分析之前,我们先来看一下使用示例。假设你想要通过c3p0连接池获取连接对象,然后对用户数据进行简单的增删改查操作。这通常涉及到使用如JDK 1.8.0_201、maven 3.6.1、eclipse 4.12、mysql-connector-java 8.0.15以及mysql 5.7.28等环境。为了创建项目,可以选择Maven Project...

急,请JAVA高手帮忙解决一下:Error finishing response java.lang...
我猜可能是因为DB连接数已满所致,当tomcat restart后session就会release db connection。如果有数据库连接的话,看看是否数据库连接没有释放 1、是否数据连接池最大值设置过小,2、回收客户端可能无效占用的数据库连接设置过大 3、无效占用数据库连接检测间隔过大 4、未关闭空闲连接。你再试试 希望对你...

Hibernate session的方法的一些说明
断开与session与当前JDBC的连接 如果连接有Hibernate管理 则将连接送回连接池 否则将送回给程序本身 Object get(Class clazz Serializable id)根据指定的实体类以及实体id返回一个实体的实例 如果找不到记录则返回null Object get(String entityName Serializable id)同上 entity为实体的名字 String getEntity...

相似回答