3

私の耳のアプリケーションは正常に機能していました。しかし、突然、元のアプリケーション例外 (@ApplicationException(rollback=true で注釈) が付けられた) を返す代わりに、いくつかのメソッド呼び出しで javax.ejb.EJBException をスローし始めました。現在、元のアプリケーション例外は EJBException にラップされています。現在、他の開発者プロジェクトで働いていた人は休暇中です. したがって、彼がこれを起こすためにコードに何をしたかはわかりません. このアプリケーション例外と ejb リモート インターフェイスは、weblogic で共有ライブラリとしてデプロイされる別の jar ファイルにあります.

アプリケーション例外をスローする代わりに、この EJBException をスローする原因を知りたいです。@ApplicationException アノテーションが weblogic によって正しく検出されていない可能性があると思います。この問題を解決するために誰か助けてもらえますか?

4

1 に答える 1

6

ejb メソッド シグネチャの「throw」句にアプリケーション例外を追加することで、この問題を解決できました。

以前は、すべての ejb クラスとアプリケーション例外クラスが同じ jar ファイルにありました。しかし、その後、アプリケーション例外クラスと ejb リモート インターフェイスは「api」jar ファイルと呼ばれる別の jar ファイルに配置され、関連する ejb ファイルは以前の jar ファイルに保持されました。

すべてのクラスが同じ jar ファイルにある場合にアプリケーション例外として扱う必要がある場合は、@ApplicationException でアプリケーション例外を宣言するだけで十分なようです。ただし、アプリケーション例外クラスが別の jar ファイルにある場合は、このアプリケーション例外を ejb メソッド シグネチャの「throw」節に追加して、WebLogic サーバーによってアプリケーション例外として解釈されるようにする必要があります。

于 2013-04-01T17:43:28.653 に答える