Tag: connection pooling

同样的老故事:Tomcat DBCP + MySQL,MySQLNonTransientConnectionException:连接关闭后不允许任何操作

我在这里讨论了关于这个主题的相关问题,并且还搜索了一段时间。 似乎我仍然不明白Tomcat的DBCP配置或机制中的某些内容。 我得到了Tomcat 6,在server.xml配置了DBCP资源: 我也找了mysql的wait_timeout ,默认是28800 。 总之,我尝试了几个选项,但似乎问题是mysql连接空闲28800秒,服务器关闭它们。 我认为池应该用validationQuery和testOnBorrow以某种方式处理这种情况,但似乎我错了。 如果我在空闲时段后在url使用autoReconnect我的第一次查询尝试导致“ …CommunicationsException: The last packet successfully received from the server was 157,493,261 milliseconds ago. ”但在此之后它正常工作。 如果我在url使用autoReconnectForPools或者只是不使用它 – 在空闲时段(8小时)之后我每次.MySQLNonTransientConnectionException: No operations allowed after connection closed得到“ .MySQLNonTransientConnectionException: No operations allowed after connection closed ”。 在这两种情况下,当应用程序加载时,情况会顺利 所以,我得出结论,连接是从mysql的一侧关闭的。 帮助,我错过了什么? 我想在不改变Mysql中的wait_timeout的情况下解决这个问题。 目标 – 稳定的应用程序,如果它发生可以在空闲时间生存:)

Spring:在启动时初始化多个连接池

我想通过从数据库表中读取连接参数来在上下文启动时初始化多个连接池。 基本上我想解决以下两件事 从数据库读取连接属性而不是属性文件。 它们是多个连接池(db中的行)详细信息。 所以我的问题是如何在spring-context文件中迭代数据库返回的行列表并创建多个数据源对象并使用唯一键存储它们(让我们说在地图中)? 数据库表结构有点像: + ————– + —————- + ————— + | DBSERVERNAME | DBDRIVERCLASS | DBMINPOOLSIZE | + ————– + —————- + ————— + | Server1 | Mysql-Driver | 10 | | Server2 | Oracle驱动程序| 20 | | Server3 | DB2-Driver | 10 | + ————– + —————- + ————— + 如果需要更多细节,请告诉我。 […]

Eclipselink Pooling相当于C3PO

我试图阻止这种日志记录 从服务器成功收到的最后一个数据包是10,255毫秒。 成功发送到服务器的最后一个数据包是0毫秒前。 我已经在persistence.xml中使用auto reconnect设置了连接url 我想要的是会有一个连接池,每分钟或每小时检查连接,以便连接仍然存在。 Hibernate具有c3po的这个function。 喜欢ff。 1800 5 50 50 50 5 5 1 true select 1; true C3P0 无论如何,我可以在eclipselink中做到这一点?

每次从Ldap连接池返回新连接时

我已经在我的项目中实现了LDAP连接池,并注意到一个奇怪的行为,每次新连接请求到来时,我配置的LDAP连接池都返回新连接,而不是重新使用返回池的现有连接。 LDAP JNDI日志 : 00:07:10,824 ERROR [stderr] (IPAdminGlobalDataReloader) Create and use com.sun.jndi.ldap.LdapClient@46728c0f[eun2p3-be.stp-qa.st.com:636] 00:07:12,222 ERROR [stderr] (IPAdminGlobalDataReloader) Release com.sun.jndi.ldap.LdapClient@46728c0f 00:07:46,704 ERROR [stderr] (Thread-65) Expired com.sun.jndi.ldap.LdapClient@674b68bd expired 00:08:46,707 ERROR [stderr] (Thread-65) Expired com.sun.jndi.ldap.LdapClient@46728c0f expired 00:22:26,329 ERROR [stderr] (IPAdminGlobalDataReloader) Create com.sun.jndi.ldap.LdapClient@386bfda[eun2p3-be.stp-qa.st.com:636] 00:22:26,333 ERROR [stderr] (IPAdminGlobalDataReloader) Create and use com.sun.jndi.ldap.LdapClient@6d9f3716[eun2p3-be.stp-qa.st.com:636] 00:22:27,748 ERROR [stderr] (IPAdminGlobalDataReloader) Release com.sun.jndi.ldap.LdapClient@6d9f3716 00:22:46,730 ERROR [stderr] […]

多个线程同时使用相同的JDBC连接

我试图更好地理解如果多个线程同时使用相同的JDBC连接尝试执行不同的sql查询将会发生什么。 结果是否在function上正确? 性能影响是什么? 线程A是否必须等待线程B完全使用其查询? 或者线程A能否在线程B发送其查询后立即发送其查询,之后数据库将并行执行两个查询? 我看到Apache DBCP使用同步协议来确保从池中删除的连接从池中删除,并且在它们关闭之前不可用。 这似乎比它需要的更不方便。 我正在考虑构建自己的“池”,只需创建一个静态的打开连接列表,并以循环方式分发它们。 我不介意偶尔的性能下降,并且每次使用后不必关闭连接的便利性似乎非常吸引人。 这样做有什么不好吗?

在pg_stat_activity中具有“空闲”状态的持久“COMMIT”查询

如果我查询: select * from pg_stat_activity where application_name ~ ‘example-application’; 我得到很多行,状态是idle ,查询是COMMIT 。 它们持久耐用,不会消失。 一段时间后,我的应用程序达到hibernate.c3p0.max_size (池中的最大JDBC连接数)限制并停止使用数据库。 一些应用程序实现细节在其他SO线程中描述: 线程池中的Guice DAO Provider – 查询变为“在转换中空闲” 为什么会这样? 如何解决这个问题呢?

C3P0配置! 在哪里和如何?

我们正在使用JPA2.0和Hibernate3.0实现Web应用程序。 连接池配置在位于META-INF文件夹中的persistence.xml中设置。 persistence.xml中: 我们遇到连接池配置问题。 似乎配置没有效果,连接将在8小时后中断。 我们需要另一个配置文件,如hibernate.cfg.xml或hibernate.properties吗? 欢迎任何帮助。

hibernate c3p0破管

我正在将hibernate 3和c3p0用于一个程序,该程序不断从某些源中提取数据并将其写入数据库。 现在问题是,由于某些原因,数据库可能变得不可用(在最简单的情况下:我只是将其关闭)。 如果要将任何内容写入数据库,则不应该有任何exception – 查询应该等待所有永恒,直到数据库再次可用。 如果我没有弄错,这是连接池可以为我做的事情之一:如果db存在问题,只需重试连接 – 在最坏的情况下为无穷大。 但相反,我得到一个破坏的管道exception,有时后面连接拒绝,然后exception传递给我自己的代码,这不应该发生。 即使我抓住exception,我怎么能再次干净地重新初始化hibernate呢? (到目前为止没有c3p0我只是简单地建立了会话工厂,但如果这可能会泄漏连接(或者可以这样做,我不会感到惊讶吗?))。 该数据库是Virtuoso开源版。 我的hibernate.xml.cfg c3p0配置: org.hibernate.connection.C3P0ConnectionProvider false -1 30000 my_test_table 3 3 10 顺便说一句:测试表已经创建,我得到了大量的调试输出 – 所以它似乎实际上读取了配置。

LISTEN / NOTIFY pgconnection关闭java?

我正在使用PostgreSQL DB并应用它的LISTEN/NOTIFYfunction。 所以我的监听器在我的AS(应用服务器)上,并且我在我的数据库上配置了触发器,这样当在表上执行CRUD操作时,在AS上发送NOTIFY请求。 java中的LISTENER类: @Singleton @Startup NotificationListenerInterface.class) public class NotificationListener extends Thread implements NotificationListenerInterface { @Resource(mappedName=”java:/RESOURCES”) private DataSource ds; @PersistenceContext(unitName = “one”) EntityManager em; Logger logger = Logger.getLogger(NotificationListener.class); private Connection Conn; private PGConnection pgConnection = null; private NotifyRequest notifyRequest = null; @PostConstruct public void notificationListener() throws Throwable { System.out.println(“Notification****************”); try { Class.forName(“com.impossibl.postgres.jdbc.PGDriver”); String url = […]

Spring应用程序在8小时后失去与MySql的连接。 如何正确配置?

我有一个Spring应用程序,我相信使用DBCP连接池连接到MySql数据库。 我说相信,因为这不是一个我非常强大的领域,如果一切都设置正确,我不肯定。 我没有运行应用程序的问题,一切正常。 问题一夜之间发生。 该应用程序没有大量使用,一夜之间它显然失去了它与MySql的连接。 我调查了一下,发现MySql有一个8小时的窗口然后断开连接或其他什么。 我对此很好,但是当用户尝试在早上登录时,他们会收到如下错误: 通信链路故障。 最后一个数据包成功收到60,000,000ms前。 最后一个数据包在15ms前成功设置。 这就是问题。 我需要它们能够在早上重新连接而不会遇到这个问题。 我似乎能够修复它的唯一方法是通过弹跳Tomcat服务器。 通过查看,似乎DBCP池应该能够以某种方式防止这种情况,但我找不到关于如何配置它的可靠信息来源。 我希望这里有人可以为我提供一些见解。 这是我当前的配置,全部在Spring xml文件中完成: APP-data.xml中 我不确定我需要添加哪些特定属性才能允许应用程序重新连接到数据库。 我不介意它是否在几个小时后关闭连接,但它应该自动重新连接,而不是像这样抛出错误。 我甚至不肯定它实际上已设置为使用连接池。 所以任何帮助都将非常感谢,谢谢。 UPDATE 我找到了这个页面 ,我认为我需要做的就是添加ValidationQuery属性。 任何人都可以validation这是否会产生欲望影响,同时保留其他所有内容? 我相信这将使用DBCP的testOnBorrow方面。 我不完全理解testOnBorrow所说的解释是什么,但我认为这会做我想要的。 有谁确认? 谢谢。