EJBは簡単なんだよ!といい続けて早3年

きしださんが久々に技術系の話題を書いてます。もう技術への興味はなくなったのかなーと思ってたのですが(やり返してみた)、なくなってはいなかったようです。
http://d.hatena.ne.jp/nowokay/20090611

Servlet 3.0+EJB3.1ですね。NetBeansとついてますけど、NetBeans依存部分は最初のセットアップの話だけです。EclipseでもIntelliJでも問題ありません。


ゆっちさんもJavaEE 6のエントリを積極に書いています。Servlet 3.0のほか新機能のシングルトンEJBやスケジュールEJBなど。
http://yucchi-ja.com/wordpress/


きしださんのブックマークコメントを見るとEJBが難しいものだといまだに思っていた人がいるようです。EJB3.1で劇的に変わったのではありません。大きく変わったのは3.0です。3.1ではローカルインターフェースの省略とパッケージングの選択(EARの中にWARとEJB-JARを入れるタイプ、WARのclassesにEJBを入れるタイプ、WARのlibにEJB-JARを置くタイプの3つがあったはず)ができるようになっただけのことです。まぁそれはそれで大きいことですけど、IDE使ってる人なら一からコンパイルやパッケージングしてる人なんていないわけで。ロジック部分はほぼ変わっていません。


ちなみにきしださんやゆっちさん、おいらが書いたコードにはDBアクセス処理が入っていませんが、たとえばDataSourceを注入するようにすればそれでデータベースアクセスがすぐに可能となります。そのためのコードは以下の2行です。この書き方もEJB3.0の時点から変わっていません。

@Resource
private DataSource ds;

あとはこのデータソースを使ってメソッド内で好きにやればよいのです。トランザクション管理もこのままのコードで全自動でやってくれます。AOPがどうだとか考える必要はありません。デフォルトではEJBを呼び出すタイミングがトランザクションの境界となります。また、JTAによるトランザクション管理になるのでJPAとDataSourceを組み合わせたトランザクションも(そんな実装にするかはともかく)可能なはずです。


ここまで簡単になってもまだ難しいと思って敬遠する人にはどういう薬を塗ればよいのでしょうね。


EJB3.0が日本で劇的に普及しなかった原因はなんでしょうか。EJBという名前が悪いんですかね。

やっぱりJ2SE 5.0が必須だったということですかね。1.4から移行してないのであれば土台がないのですからそりゃあ無理というものです。もうすぐ5.0のサポートも切れるでしょうからJavaSE 6が必須なJavaEE 6はJavaEE 5のときよりまだましに見えます。言語の仕様も大きく変わっていませんし。