1

SLSBにデプロイされたリモートがありOC4Jます。

このセッション Bean は、場合によってはoracle.toplink.essentials.exceptions.QueryException例外をスローする TopLink を使用します。

この例外を次のように処理しています。

public void slsbMethod()
{
   try
   {
      // oracle.toplink.essentials.exceptions.QueryException throws here 
   }catch(Exception ex)
   {
      // do nothing
   }
}

そして、私はこのSLSBをクライアントからそのように呼び出しています:

try
{
    fooBarService.slsbMethod()
}catch(Exception ex)
{
    System.out.println("Exception calling the EJB server");
}

ただし、EJB でこの例外を処理していますが、それでもメッセージがException calling the EJB server出力されました。

これはどうなっているの??

4

1 に答える 1

0

コンテナー管理のトランザクション コードから例外が発生している場合は、Bean 管理のトランザクションを使用することをお勧めします。これにより、Bean 内の UserTransaction.commit への呼び出しの周りに例外処理を配置できます。または、インターセプターを作成してトランザクションを開始し、InvocationContext.proceed() を呼び出してから、トランザクションをコミットし、必要に応じて例外を処理することもできます。これは基本的にコンテナーが行っていることですが、好きなようにコミット例外を処理したり、他の Bean/メソッドでロジックを再利用したりできます。

于 2012-02-08T15:01:24.190 に答える