gpt4 book ai didi

java - Tomcat 连接池配置 : DataSource type and "Too many connection" error

转载 作者:可可西里 更新时间:2023-11-01 06:37:10 30 4
gpt4 key购买 nike

我正在通过 JNDI 资源使用 tomcat 连接池。

context.xml中:

<Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
maxActive="1000" maxIdle="100" maxWait="10000"
url="jdbc:mysql://localhost:3306/mydatabase"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" />

web.xml 中:

<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mydb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

从我需要数据库连接的 java 类中,我执行以下查找:

Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/mydb");

我第一个疑惑是DataSource类型。使用 javax.sql.DataSourceorg.apache.tomcat.jdbc.pool.DataSource 是否一样?

此外,有时我会收到“连接太多”错误。我已经阅读了许多关于此的 stackoverflow 问题/答案,但我没有成功地理解问题可能出在哪里。

我遵循了 tomcat 文档,并正确关闭了结果集、语句和连接。

编辑

我的tomcat版本是7.0.26。所以应该有一个错误(参见 informatik01 用户建议的链接)

最佳答案

如果您将 JDBC 资源放在 $CATALINA_HOME/conf/context.xml 中,它会为您部署的每个 Web 应用加载资源。 (这可能意味着大量的连接)如果您将该资源移动到您的 webapp 的 META-INF/context.xml 中,它只会在部署该特定 webapp 时加载。 http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html

也可能是您的 maxActive 和 maxIdle 太多了。

关于java - Tomcat 连接池配置 : DataSource type and "Too many connection" error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14760177/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com