2012-02-07 8 views
1

リモートSLSBOC4Jに配置されています。EJBリモート例外処理

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

私はこの例外をこのように扱うています:

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が印刷されました!

どうしたのですか?

+0

エラーのスタックトレースの例外は何ですか? EJBコンテナ内のコンテナ管理のトランザクションコードからではなく、メソッド内から例外がスローされていることを確認してください。 –

+0

はい、そうです、EJBコンテナのコンテナ管理のトランザクションコードからスローされる可能性があります。これを解決するにはどうすればよいですか? –

答えて

0

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