这就是我想做的:我正在使用 JAX-RS 编写一个 Restful 应用程序。我编写了一个异常映射器来将 SQLException
映射到 HTTP 状态代码 500。
@Provider
public class SQLExceptionMapper implements ExceptionMapper<SQLException> {
@Override
public Response toResponse(SQLException exception) {
Logger.error(exception);
return Response.serverError().build();
}
}
我在代码中遇到过很多这样的情况:
try {
conn.setAutoCommit(false);
/* do some stuff */
conn.commit();
} catch (SQLException ex) {
conn.rollback();
/* re-throw SQLException again so exception mapper converts it to HTTP status 500 */
throw ex;
} finally {
conn.setAutoCommit(true);
conn.close();
}
实际上我不喜欢conn.rollback();抛出前;
。我真正想要的是从 SQLException
对象获取 JDBC Connection
对象,以便我可以在异常映射器内回滚连接。这可能吗?与此问题无关的另一个问题是:我在数据库调用之间进行了一些广泛的数学处理。我在完成每个阶段后关闭连接,并在下一阶段开始时打开它。因此,在一个请求中我会执行多次打开/关闭操作。这是不好的模式吗?
最佳答案
Is it possible to get JDBC Connection object from SQLException object?
没有。
关于java - 是否可以从 SQLException 对象获取 JDBC Connection 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709883/