0

私は最近、会社が段階的に廃止している古いデータベースから定期的に一部のデータをインポートするコードに取り組んでいます。古いデータベース用にglassfishに接続プールを設定し、@Resourceアノテーションを介してデータソースとして挿入します。データベースが利用できない場合を除いて、それはうまく機能します。そのような状況では、サーバーはスタックトレース全体をjavax.resource.spi.ResourceAllocationExceptionに関連するログにダンプします。リソースルックアップがSQLException(データベースにアクセスできないことに関連する)をスローしていることを考えると、これは理にかなっています。私がはっきりしていないのは、例外が実際にBeanの外部で発生しているため、例外をどこでキャッチして処理するかです。

リソースが注入されているときに発生する例外をEJBが処理する方法はありますか?

4

1 に答える 1

1

接続に対してそのレベルの制御/回復が必要な場合は、接続を挿入するのではなく、手動で作成します。

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

「古いスタイル」の接続管理については、追加資料を参照してください。

于 2013-03-18T06:07:33.073 に答える