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.