问题标签 [apache-commons-dbcp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1004 浏览

database - “没有更多数据可以从套接字读取”异常 Tomcat DBCP

我在 Oracle 10g 中使用 tomcat 的 DBCP。成功使用连接后,经过一段时间后,没有更多可用连接。我收到此异常

没有更多数据可以从套接字读取

下次重试时会发生此异常:

OALL8 处于不一致状态

下次重试时会发生此异常:

Io 异常:软件导致连接中止:套接字写入错误

之后发生此异常:

封闭连接

我的问题是这些异常的原因是什么?它们是由于 DBCP 或 Oracle 数据库中的一些错误导致的问题。

我正在使用 Tomcat 6、jdk 1.7、Oracle 10.2

0 投票
1 回答
2706 浏览

hibernate - Hibernate c3p0 和 DBCP 连接池机制

如果您没有在 hibernate.cfg.xml 中指定设置,默认连接池是什么,您如何更改它?这是休眠配置

问题 1. c3p0 jar 自带 hibernate3 吗?

2.如果你不指定c3p0,hibernate是使用它的默认连接池(你怎么知道它没有使用默认,有参数)还是DBCP?

3.如何修改我的 Web 应用程序的 DCBP 参数 我是否必须更改 catalina 或 hibernate 配置中的上下文文件 conf/catalina/locahost/Applicationame.xml,我必须更改/添加什么我必须指定用户名和密码还是只是参数?

4.有人能解释一下这是如何工作的,休眠请求连接,tomcat会从池中获取连接吗?如果您指定 c3p0,DBCP 会被绕过吗?

5.如果我有 2 个 Web 应用程序使用相同的表/用户名/密码怎么办?如果他们有自己的 DBCP 和 c3p0 jar,他们会被征用什么?如果 conf/context.xml 应用于所有应用程序,您可以为 DBCP 指定全局参数以供应用程序使用吗?

这都与mysql的8小时连接超时有关,我不想更改数据库参数。

0 投票
1 回答
1366 浏览

tomcat - Tomcat 未关闭连接,仍处于睡眠模式

我们在 MySql 5.1 中使用 tomcat 6.0.26,与数据库的连接在 server.xml 中设置,如下所示,

当我在 MySql 中运行 show full processlist 时,它显示大量连接处于睡眠模式,这可能是什么原因造成的?

问候,

罗希特

0 投票
4 回答
13236 浏览

java - Tomcat error: java.sql.SQLException: No suitable driver found for jdbc:sqlserver://

I have a terrible problem with Tomcat, well terrible because of this problem I've thrown away the project for more than a month now... Yet I'll still need to solve it and to go on with the project...

So it's throwing me this error:

java.sql.SQLException: No suitable driver found for jdbc:sqlserver://isd.ktu.lt:1433;DatabaseName=LN2012_bakDB2 java.lang.NullPointerException

The thing is that the same application is working in the desktop version perfectlz, however when it comes to the version which is supposed to be running on the server (Tomcat 7.0.22.0 inside NetBeans 7.1.2) it just throws the Error. It seems it doesn't load the pooling driver or I don't even know...

Well here's the part responsible for that:

It happens at the point where it tries to get the connection, then it gets a null pointer exception, since the connection is not retrieved successfuly.

I'm not familiar with Tomcat and up until this moment, Netbeans handled tomcat fine... The thing is I hate errors like this... If you don't solve it in three days, you get so frustrated and don't wanna get back to that, you feel like hitting a wall... Now I tried googling a lot about it, but still it wasn't much of a help... So I'd be really glad if somebody could help me with this. Thanks. :)

0 投票
2 回答
7171 浏览

tomcat - Tomcat:查看哪些线程正在使用数据库连接池

Tomcat 有一个数据库连接池 (DBCP) 可以使请求更快。

在我的应用程序中,太多的连接被使用太久,我怀疑有泄漏(连接没有正确关闭),我需要找出泄漏的位置。

问题:如何找出正在使用连接的每个线程的名称?

最好是实时 JMX MBean,但也欢迎其他提示。显示每个线程的堆栈跟踪或类名也是可以接受的。

注意:我不是在寻找显示 DBCP 设置的 MBean。我想看看每个连接的用途。

0 投票
1 回答
761 浏览

jdk1.6 - 哪个 JDK 编译 commons-dbcp-1.2.2 ?(JDK5/6/7 的问题)

当我尝试使用 JDK6/7编译commons-dbcp-1.2.2时,出现此错误:

org.apache.commons.dbcp.BasicDataSource 不是抽象的,不会覆盖 java.sql.Wrapper 中的抽象方法 isWrapperFor(java.lang.Class)

这是因为 commons-dbcp-1.2.2 是在 JDK6 之前编写的,java.sql.Wrapper当时还没有isWrapperFor方法。

所以我安装了 JDK5,但我收到了这样的消息(可能是因为所有 Java7 编译的 JAR):

java.lang.UnsupportedClassVersionError:.class 文件中的错误版本号

如何解决这个问题呢?

0 投票
1 回答
2550 浏览

jpa - 如何将 Apache-Commons DBCP 与 EclipseLink JPA 和 Tomcat 7.x 一起使用

我一直在开发一个部署在 Tomcat 7 上的 Web 应用程序,它使用 EclipseLink JPA 来处理持久层。

在测试环境中一切正常,但由于防火墙切断了非活动连接,我们在生产环境中遇到了严重问题。基本上,如果连接在一段时间内处于非活动状态,则位于 Tomcat 服务器和 DB 服务器之间的防火墙会杀死它,结果是在池中留下“陈旧”的连接。

下次使用该连接时,代码永远不会返回,直到它收到“连接超时”SQLException(下面的完整 ex.getMessage())。

EL Fine]: 2012-07-13 18:24:39.479--ServerSession(309463268)--Connection(69352859)--Thread(Thread[http-bio-8080-exec-5,5,main])--我的已替换查询以将其发布到 SO [EL 配置]:2012-07-13 18:40:10.229--ServerSession(309463268)--Connection(69352859)--Thread(Thread[http-bio-8080-exec-5, 5,main])--断开[EL Info]: 2012-07-13 18:40:10.23--UnitOfWork(1062365884)--Thread(Thread[http-bio-8080-exec-5,5,main]) --尝试在事务之外执行读取查询时检测到通信失败。正在尝试重试查询。错误为:异常 [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504):org.eclipse.persistence.exceptions.DatabaseException 内部异常:java.sql.SQLException:Eccezione IO:连接超时

我已经在persistence.xml 中尝试了几种配置,但是由于我无法访问防火墙配置,所以我对这些方法没有运气。我也尝试使用 setCheckConnections()

我设法使用 testOnBorrow、testWhileIdle 和 DBCP Apache Commons 提供的其他功能在测试脚本中解决了这个问题。我想知道如何覆盖 EclipseLink 内部连接池以使用自定义连接池,以便我可以提供基于 DBCP 的已配置池,而不仅仅是使用 persistence.xml 配置内部连接池。

我知道我应该提供一个 SessionCustomizer,我不确定哪一个是正确的模式。基本上我想以类似 JPA 的方式保留 DBCP 的性能。

我在 Tomcat 7 上进行部署,我知道如果我切换到 GF,我不会遇到这个问题,但是为了与同一服务器上的其他 webapp 保持一致,我更愿意留在 Tomcat 上。

0 投票
1 回答
5429 浏览

monitoring - 监控 Commons DBCP?

我的 Tomcat 中的一个巨大的 webapp 有时会开始使用太多的 DBCP 连接,从而导致问题。
为了进行调查,我想在每个时间点准确地知道哪个线程/方法正在持有池的连接。不需要是实时的,事后分析就可以了。

一直在找这样的DBCP监控工具,无果,所以准备写我的。
(如果有兴趣我可以开源)

这是我的计划:

DBCP 监控

问题:
我是否遗漏了一些使该想法无效的 Commons-DBCP 1.4 概念?
还是我在重新发明轮子?

0 投票
1 回答
1219 浏览

java - 禁用 dbcp 连接池的重试尝试

我正在使用commons-dbcp连接池,以防Mysql连接丢失,池在“放弃”之前重试多次。缺点是在返回之前等待太久。我需要一种方法来禁用这些重试,以便相应地处理异常。应用程序是基于弹簧的。

0 投票
0 回答
1314 浏览

hibernate - Hibernate 3.2 和 apache dbcp 吃掉 postgres 连接

我有一个简单的实体 bean,并使用 hibernate 3.2.5 将其持久化到 postgres,prod 将是 pg 8.4,而我目前在 9.1 上开发。我使用 apache commons dbcp 1.4(和 commons pool 1.5.4)一个公共类 DBCPConnectionProvider 实现 ConnectionProvider 作为从网络上搜索到的http://wiki.apache.org/commons/DBCP/Hibernate

之前我使用 c3po 和 mysql 而不是 dbcp。现在我明白了

引起:org.hibernate.exception.GenericJDBCException:无法打开连接

原因:org.postgresql.util.PSQLException:致命:剩余的连接槽保留用于非复制超级用户连接

之前使用 mysql/c3po,我得到了类似的错误。

目前 persistence.xml 属性如下所示:

使用它我希望 dbcp 保持 5 个连接打开并将这些连接重新分配给 javacode。

目前我有一个插入记录的servlet。它成功插入的数量或多或少等于 postgresql.conf 中的 max_connections 数量,即 100。之后它失败并出现上述错误。当前,servlet 由在循环 apx 中运行 350 次的客户端调用,在每个循环中发布一行以存储 servlet。

如果我在没有 dbcp 或其他池的情况下运行,我会得到相同的异常,唯一的变化是它是由 hibernate 而不是 dbcp 抛出的。

我本来希望 dbcp 只分配 5 个连接,而休眠一次只打开和关闭一个连接。

实际代码很简单,基本都是netbeans 6.5中的jpa-generator生成的。

这是我从我的 servlet 调用的创建函数(Netbeans 的代码):

实体bean同样标准,基本上就像Netbeans生成它一样,它完美无缺,无法想象连接问题在那里。似乎我有一些代码/配置使 Hibernate 否决了连接池配置并让池打开新连接而不是重用旧连接。有人在这里有任何线索吗?