Java 对账单已关闭
我遇到一个问题,在开发服务器(运行Weblogic 10.3.6)上,运行进程会导致以下情况:Java 对账单已关闭,java,spring,hibernate,jdbc,weblogic,Java,Spring,Hibernate,Jdbc,Weblogic,我遇到一个问题,在开发服务器(运行Weblogic 10.3.6)上,运行进程会导致以下情况: java.sql.SQLException: Statement has already been closed 所有数据库操作(主要是插入/更新)仍然会发生,并且看起来是正确的。但是,在我自己的工作站上的本地实例中运行不会触发该异常 此代码应用程序运行Spring和Hibernate,触发代码在编程事务中运行 有人能提供故障排除的想法吗?如果你发布完整的stacktrace,答案将非常简单。但我
java.sql.SQLException: Statement has already been closed
所有数据库操作(主要是插入/更新)仍然会发生,并且看起来是正确的。但是,在我自己的工作站上的本地实例中运行不会触发该异常
此代码应用程序运行Spring和Hibernate,触发代码在编程事务中运行
有人能提供故障排除的想法吗?如果你发布完整的stacktrace,答案将非常简单。但我会给你一些解决问题的建议。对于我的实践
java.sql.SQLException:Statement已经关闭
意味着您的语句
超时。当语句超时时,您将得到前面的异常。以下内容将帮助您配置语句
超时等。此外,您必须注意关闭并初始化station、ResultSet和Connection,这些问题可能会导致不良行为,例如,您可能会遇到以下情况:
Connection conn = null;
PreparedStatement ps = null;
try {
conn = getConnection ();
for (TableBean tableBean : listTableBean) {
ps = conn.prepareStatement ("INSERT INTO table (id, desc) values (?, ?)");
ps.setInt (1, tableBean.getId());
ps.setString (2, tableBean.getDesc());
ps.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
您可以看到,ps
在循环结束之前不会关闭,因此数据库可能会抛出超时错误,因为在这种情况下
数据库负责关闭会话。必要时最好关闭会话
Connection conn = null;
PreparedStatement ps = null;
for (TableBean tableBean : listTableBean) {
try {
conn = getConnection ();
ps = conn.prepareStatement ("INSERT INTO table (id, desc) values (?, ?)");
ps.setInt (1, tableBean.getId());
ps.setString (2, tableBean.getDesc());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
我希望这些信息对你有帮助
祝你好运。请包括stacktrace和触发此异常的代码。通常错误意味着在使用
close()
关闭语句后执行操作。问题是我使用的是Spring/Hibernate组合,而不是直接使用JDBC。因此,所有的连接和声明工作都由我来完成。