Java EE 7徹底入門を読んだ(CDI/EJBまわり)

ということで、昨日に引き続き。

CDIは5章、EJBは6章ですね。

作者は何かCDIについて非常に大きな思い違いをしているのではないかという印象でした。
あと、これらの章を書いた人は多分信用が置けない。

CDIEJBのどちらを使うか?

この質問が出てくる時点でCDIの役割について勘違いしているようなきがするのですが、CDIEJBは排他する機能ではありません。EJBJSF等でそれぞれInjectionするためのアノテーションが生まれてしまい、それらを統一して使用する側では同じように使用できるように使えるのがCDIです。歴史的経緯によりEJB/JSFアノテーションが生まれてからCDIが生まれたため、同じ(もしくはサブセットの)機能を持ったアノテーションがあるため、非常に解りにくくなっているのですが、CDIが使用できる環境では基本的にCDIアノテーションを使用して、CDIでInjectionされるクラスとして、EJB/JSFやその他を使用するといったことを行います。

その中で、EJBの機能が必要であればEJBを使用すれば良いし、EJBの機能が不要であれば、EJBを使用しなければよいのだと思います。

また、Java EE 7からCDIJTAに増えた最重要機能である@Transactionalアノテーションについて説明がされていないあたり、著者がJava EE 7に知識のアップデートが出来てない可能性があります。なんか勘違いしてる?JPAの章でもトランザクションの管理はEJBが担ってるという記述に引っかかりましたが、EJBの章でも同じ記述が。JTAどこいった。

見出しと中身の記載内容が全く違う

これは本当に、どうにかしろと言いたくなるのですが、見出しとその中の文章で書かれている内容が逆転している箇所がありました。
EJBの利点について書いてあるところで、
3.Java EE準拠のアプリケーションサーバー上であればどこでも動く
これは「write once, run anywhere(一度書けばどのようにでも動く)」という(〜中略〜)ですが、実はEJBについては一筋縄ではいかないようです。

タイトルだけ読んで内容を流し読みした人が混乱することになるのでやめてくれ・・・・・・

という感じ。
とても、つらい。

Java EE 7徹底入門 標準Javaフレームワークによる高信頼性Webシステムの構築

Java EE 7徹底入門 標準Javaフレームワークによる高信頼性Webシステムの構築