EJB3のBusiness Interface

EJB 3では、EJB 2.xまでComponent Interfaceと呼んでいたものをBusiness Interfaceという呼び方に変更しています。しかも、Remote/Localで、インタフェースのメソッドシグネチャは同じです。これは地味かもしれませんが、嬉しい改善です。

EJB Design Patternの'''Business Interface Pattern'''は、Local/Remoteのcomponent interfaceのスーパーインタフェースとしてbusiness interfaceという共通のインタフェースを持つことを推奨していました。しかし、このパターンの欠点は、Local/Remoteでほとんど一緒なのに、Remoteの場合はjava.rmi.RemoteExceptionをスローしなければならないということです。

ところが、EJB 3ではRemoteの場合でさえもbusiness interfaceがjava.rmi.RemoteExceptionをスローすることを禁止しています。RemoteExceptionをスローすべきときには、コンテナがEJBExceptionでラップしたものをスローするのです。これで、インタフェースが真に一本化され、クライアント側の例外処理がすっきりしました。

このように、EJB 3でCheckedExceptionが緩和されたのも時代の流れでしょうか。Spring FramworkのMission StatementにもJavaはCheckedExceptionを使いすぎていると書いてありましたね。EJB 3のGoalのひとつとして次のような文言があります。

Reduction of the requirements for usage of checked exceptions.