gpt4 book ai didi

java - JSP<->Mysql 连接的间歇性错误消息

转载 作者:行者123 更新时间:2023-11-29 00:56:04 32 4
gpt4 key购买 nike

我有一些连接到 mysql 数据库的 jsp 页面,但我间歇性地收到以下错误消息:

“最后一个从服务器成功接收的数据包是在 36,727,995 毫秒前。最后一个成功发送到服务器的数据包是在 36,733,072 毫秒前。比服务器配置的“wait_timeout”值长。您应该考虑过期和/或在您的应用程序中使用之前测试连接有效性,增加服务器配置的客户端超时值,或使用 Connector/J 连接属性“autoReconnect=true”来避免此问题”

发生模式非常随机,但它往往在网站上没有太多 Activity 之后发生最频繁,比如早上的第一件事。

我在 stackoverflow 上发现了这个线程,它提到了同样的错误: Tomcat6 can't connect to MySql (The driver has not received any packets from the server)

最后的决定是添加这一行:

permission java.net.SocketPermission "127.0.0.1:3306", "connect";

$TOMCAT-CONFIG/policy.d/04webapps.policy

我在 centOS 5.5 上运行 tomcat 7,但在任何地方都看不到 policy.d 目录或 04webapps.policy 文件。我是否需要手动创建这两个,或者是否有其他方法可以解决此问题?

更新:这是我如何在我的一个 jsp 文件中查询数据库的示例:

DBFunctions dbf = null;
boolean bException = false;
ArrayList<String[]> arrayListRows1 = new ArrayList<String[]>();
try
{
dbf = new DBFunctions();
dbf.db_run_query(query2);
while (dbf.rs.next()) {
String [] tmp = new String[6];

tmp[0] = dbf.rs.getString("fact_data.entity_id");
tmp[1] = dbf.rs.getString("date_begin");
tmp[2] = dbf.rs.getString("value");
tmp[3] = dbf.rs.getString("ticker");
tmp[4] = dbf.rs.getString("full_name");
tmp[5] = dbf.rs.getString("name");






arrayListRows1.add(tmp);

}
}
catch (SQLException sqle)
{

out.println(PopulateSpreadsheet.createGoogleError(strReqId,"sql_exception",sqle.getMessage(),"PF ERROR CODE 2eh2-1"));
bException = true;
}
finally
{
if (dbf !=null) dbf.closeConnection();
if (bException == true)
return;
}

DBFunctions.java 位于 Web 应用程序的 src/目录下,因此从技术上讲,它不是直接查询数据库的 jsp 页面。

我会回去再检查一次,但我尝试用相同的方式编写所有数据库查询的代码,并在处理完 ResultSet 后立即关闭连接。

关于如何最好地对连接池进行清点以定期检查连接状态有什么建议吗?

更新:我仍然对这个错误有疑问。我很欣赏将我的大部分编程逻辑从我的 jsp 页面移出并移入 servlet/库的建议,但我认为这不会解决这个特定问题。

其他人报告说看到了这个问题,这是因为 mysql 在 tomcat jdbc 连接池中的连接超时。令我感到奇怪的是,tomcat 连接池没有采用某种保持 Activity 状态来避免此问题。我认为这将是每个连接池设计的一部分。

最佳答案

我能够通过将以下属性添加到 context.xml 来解决问题:

testWhileIdle="true"
testOnBorrow="true"
testOnReturn="false"
validationQuery="SELECT 1"
validationInterval="30000"

这些设置会导致在从池中拉出连接时对其进行测试。

关于java - JSP<->Mysql 连接的间歇性错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6060769/

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