使用@Resource时处理EJB上的异常

时间:2013-03-15 18:41:47

标签: java java-ee glassfish

我最近一直在研究代码,该代码定期从我公司正在逐步淘汰的旧数据库中导入一些数据。我在glassfish上为旧数据库设置了一个连接池,然后我通过@Resource注释将其作为数据源注入。除非数据库不可用,否则它运行良好。在这种情况下,服务器将整个堆栈跟踪转储到与javax.resource.spi.ResourceAllocationException相关的日志。这是有道理的,因为资源查找抛出了一个SQLException(与无法访问数据库有关)。我不清楚的是捕获和处理异常的位置,因为它实际上发生在bean之外。

EJB是否有办法处理资源注入时发生的异常?

1 个答案:

答案 0 :(得分:1)

如果您需要通过连接进行该级别的控制/恢复,请手动创建它而不是注入它:

try {
  Context ctx = new InitialContext();
  DataSource ds = (DataSource) ctx.lookup("jdbc/myDBResource");
  Connection connection = ds.getConnection();
  ...
}
catch (Exception exc) {
  ...
}

请参阅additional material for "old style" connection management