问题标签 [c3p0]
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.
java - C3P0 线程安全吗?
当我尝试在 MySQL 数据库上使用 C3P0 执行一些简单的读取 (SELECT) 操作时,会发生中断异常 (java.lang.InterruptedException)。当我将并行线程的数量增加到 100 以上时会发生异常(我尝试过使用 5、10、20、60 和 100)。我执行的语句很简单:
我的连接是从使用以下属性配置的 ComboPooledDataSource 汇集的(另请参见C3P0 手册):
我运行测试的机器上的 MySQL 服务器配置为接受 1024 个连接,并且我运行的单元测试已成功执行(数据按预期从数据库中检索)。但是,在 C3P0 日志文件中,我发现以下警告:
我想知道该警告的原因以及它可能对软件的稳健性和稳定性产生的影响。请注意,使用后,我关闭了结果集、SQL 语句和连接。最后,一旦测试结束,我通过调用方法关闭池ComboPooledDataSource#close()
。更奇怪的是(并且似乎揭示了同步问题),如果我使用以下命令给池足够的时间......
日志中不会出现任何警告!你认为这会引发 C3P0 的线程安全问题,还是我做错了什么?
更新1:
让我提一下Thread.sleep(10000)
,除了已经提到的内容之外,删除 会导致 MySQL 日志文件中记录以下信息:
可能会更亮一些...
更新 2:
这是我的 MySQL 服务器配置。服务器允许的最大连接数设置为 1024(如上所述),这对于我想要做的事情来说已经足够了。
为了混淆任何疑问,我验证了最大连接数是通过以下方式正确设置的:
sql - 无法从 sql server 检索数据
我无法从 sql server 中的 db 检索数据。
我使用 c3p0 作为池,这是 c3p0.properties:
在 sql server 中,我新建了一个名为 test 的用户,它的默认数据库是 TIMDB,服务器角色是公共的,这是用户映射:
但是当我启动应用程序时,我什么也得不到。
从log4j创建的日志中,我可以得到用于检索数据的sql,但是如果我将sql复制到sql management stutio并创建一个新的查询,我可以检索一些数据。
我想知道为什么?
hibernate - 当您使用 hibernate.cfg.xml 时,是否有任何理由保留 c3p0.properties 文件?
我们的项目使用 Hibernate (3.3.2) 和 c3p0 作为我们的连接池。有一段时间,似乎 c3p0.properties 文件中有一些 c3p0 属性,而 hibernate.cfg.xml 中有其他属性。我刚刚将最后两个 c3p0 属性移动到 hibernate.cfg.xml 并确认它们受到尊重。
当 c3p0 属性可以在 hibernate.cfg.xml 中指定时,是否有任何理由保留 c3p0 属性文件?比如有一个属性不能在那里配置,或者我没有想到的其他原因。在我看来,在两个地方指定 c3p0 属性只会引起混乱,
我认为以前有一种观点认为某些属性无法在 hibernate.cfg.xml 中传递,我认为这只是一个神话。这就是提出这个问题的主要原因。
hibernate - Hibernate 追随者和痛苦:非法尝试将集合与两个开放会话相关联
我正在做一个游戏项目,我需要每 10 分钟对玩家进行一次排名,这很简单!股票游戏。为了更新玩家排名,我每 10 分钟运行一个线程,线程获取每个玩家对象(命名玩家),计算其分数,然后移动到下一个玩家,顺便说一下,我将玩家分数存储在它自己的对象中(玩家)。
但我认为这不应该是原因,因为如果更新出现在事务块内,MySql 可以保证数据的准确性,那么为什么要让 hibernate 限制这个功能呢?
我不知道这是否是一个并发问题,并且与我告诉的场景有什么关系。还有一件事是我没有使用 c3p0!与休眠一起,我不知道这是否相关,我只是想提一下。
thnx 在前进,
java - 一旦acquireRetryAttempts达到c3p0 getConnection不返回或抛出异常
将 c3p0 用于我的连接池,在连接池用尽其重试尝试后,调用 c3p0 的线程似乎已终止或处于未定义状态。
连接池定义如下:
客户端代码调用 getConnection,它会在 c3p0 旋转通过连接重试尝试时短暂阻塞。奇怪的是,它似乎并没有真正从这个调用中返回。从文档中,我预计会抛出一个异常:
这很奇怪。它绝对不会返回,也不会抛出异常。从每 5 秒运行一次的 Executors.newSingleThreadScheduledExecutor 调用 getConnection 的客户端代码。当对 getConnection 的调用似乎消失时,调度的执行线程似乎也完全停止执行。
在这种情况下,我故意关闭数据库,以便弄清楚这里发生了什么。有任何想法吗?
更新:奇怪的是,如果我不使用计划的执行程序而是在我自己的监视器线程中运行它,#getConnection 会按预期执行。
hibernate - 数据库连接用完了!
我正在使用 c3p0 作为连接池运行 Spring/Hibernate 连接到 MySQL 设置。由于某些奇怪的原因,当系统处于负载状态时(当然),它会耗尽连接。
在我们开始达到新的流量水平(超过一百个并发用户)之前,该站点非常稳定。那时数据库会崩溃(与 CPU 挂钩)。我的第一个动作是在应用程序中通过广泛的缓存和查询优化等来提高性能。
现在它将间歇性地用完连接。它甚至似乎并不依赖于负载。更多的时间让我认为这是一个泄漏,但对于我的生活,我无法弄清楚它会来自哪里。
这是我的配置:
我正在运行应该关闭连接的 OpenSessionInViewInterceptor:
我还在为 @Transactional 使用 spring 注释,因为我在非 Web 前端代码中重用了我的服务。
这里实际上只有两个选项,完成后不会释放连接。或者它正在和数据库聊天,就像它试图穿上她的裤子一样。如果有人有任何想法,我将不胜感激 thx
跟进:最后事实证明,由于使用 OpenSessionInViewInterceptor,我正在泄漏连接。我将spring security作为过滤器运行,因此它可以连接到数据库并且永远不会关闭它们。解决方法是将 OpenSessionInViewInterceptor 移动到 OpenSessionInViewFilter。
spring - 在基于tomcat Spring的应用程序中使用c3p0连接池
我有一个在 tomcat 6 下运行的基于 Spring 的 Web 应用程序。现在,我想使用 c3p0 连接池而不是 tomcat 的默认 DBCP。因此,从c3p0 帮助文档中,我将数据源定义为context.xml
:
现在,文档说,我应该在以下内容中包含以下内容web.xml
:
我还有以下内容applicationContext.xml
:
当我启动tomcat时,我得到
javax.naming.NameNotFoundException:名称 jdbc 未绑定在此上下文中
没有 c3p0 并在 tomcat6 中使用默认连接池可以正常工作。
任何帮助,将不胜感激。
java - C3P0 连接问题
我正在使用 hibernate 和 cp30 进行数据库操作并出现错误:
这是我的 jdbc 属性:
和cp30:
Mysql 现在没有给我任何连接。有没有办法显示mysql的连接使用情况?我可以刷新这些不良连接吗?最重要的问题是,我应该怎么做才能避免这个连接池错误?
提前致谢。
java - 使用 Spring 在 Hibernate 中配置内置的 c3p0 池
我了解到要在 hibernate 中配置 c3p0 池,我们可以在 hibernate.cfg.xml 中编写配置,如下所示:
但是我使用 Spring 配置了 Hibernate。当我尝试在下面做时,它不起作用:
我已经阅读了有关使用可以使用 Spring 配置的独立 c3p0 池的信息,但是有什么方法可以使用 Spring 在 Hibernate 中配置内置的 c3p0 池?
启发我,因为我是初学者。