<Java EE 7徹底入門 概要説明 (猪瀬さん)>
書籍『Java EE 7徹底入門』著者
→サンプルアプリ作成できるので、今後活用してもよい。
.ear = .jar + .war
Java EE 7
→2013年
次世代フレームワーク
→検討する上で情報量が大切。
<プレゼンテーション層の開発 JSF (加藤田さん)>
(当時)Servletでは、入力チェックがないためOSS(struts等)を利用していた。
JSF構成要素
→フェースレット(画面)とマネージドビーン(処理)
XHTMLベースのテンプレートエンジン
JSF
→サニタイジングがデフォルト等。JSP進化版。
@Named フェースレットと連携しますよ~
@RequestScoped スコープの定義
本書で触れられなかった話
・JSFのより詳細な機能
→カスタムコンポーネント
イベントハンドリング
ビーンバリエーション
EL
・JavaEE 8(JSF2.3)
→WebSocket対応
マルチフィールドバリデーション
・MVC1.0
→アクション指向フレームワーク
JavaEE8で導入
JAX-RSを拡張(アノテーション同じ)
・JSF関連ライブラリ
プレゼンテーション層の選択肢
1.JSF
2.JAX-RS+クライアントサイドフレームワーク
3.MVC1.0+Web Components?
どれを選んでいてもコンポーネント指向に収束。
→人間がイメージしやすいのかも。。
PrimeFaces
→Ajaxベース。100を超えるコンポーネント
OmniFaces
→JSF開発をサポートするユーティリティライブラリ
<ビジネスロジック層の開発 CDI,EJB (羽生田さん)>
CDIとEJBの組み合わせがよい。
CDI
→インジェクション、型解決、定義方法
→イベント処理
EJB
→解説。きちんと設計すれば
CDIコンテナの取り扱い
@ConversionXXXXX
CDIにおけるトランザクションの取り扱い
DI
→「層」をくっつける接着剤の役割
スコープ定義
@RequestScoped
@ViewScoped
@SessionScoped
@ApplicationScoped
@ConversationScoped → 開発者が明示的に決める事が可能
スコープ外になるとGC対象になるので。
CDI
→スコープ定義がわかれば使えるため、簡単。
層について
JSF⇔CDI⇔Entity
※ただし、CDIは実際は全ての層に入るはず
CDIコンテナ
・Weld
→バージョンは必ず認識(APサーバとの関連)すること。
環境によって動かないみたいなことがある。
Glassfish/Weld、Oracle Weblogic/Weld
・CDIコンテナへのアクセス用
→取得:CDI.current();
CDI.select(MyBean.class).get();とか
・CDI.current().toString();
→返却:Weld
・CDIProvider
・BeanManager
→面白い機能。
@Inject
BeanManager manager;
業務アプリで使いすぎると危険
過度の使いすぎ→FW化→障害調査が大変
・大規模開発だと勝手インジェクションとか。。。
@ConversationScoped
・自分でスコープ長を定義
・begin()→end()
トランザクション
・javax.transactionパッケージ
・@Transactional
→トランザクション境界の設定
→クラスとメソッドどちらでも
・@TransactionScoped
CDI+EJB
→ルール決めが大切
多量のインジェクション数は危険
→課題。フレームワークで制御しようとすると本末転倒になりそう。
だから設計大事。
<バッチアプリケーションの開発 jBatch (猪瀬さん)>
JavaEE7から登場
Spring Batchから多く継承
JSR-352で規定
1.プロセスとして実行
○ シンプル。直感的。
△ JVM起動時間のオーバーヘッド。CPU浪費。
△ APサーバで動く他の部品との共有が難しい
2.自作スレッドとして実行
○ スレッドはプロセスに比べて軽く起動
△ スレッド管理するmainプログラムを自作必要
△ APサーバで動く他の部品との共有が難しい
3.サーブレットとして実行
○ スレッドはプロセスに比べて軽く起動
○ スレッド管理プログラムの自作不要
○ APサーバ部品との共有OK
△ 実行状況の把握、スレッド停止が難しい
△ HTTPリクエストタイムアウトの問題
4.jBatchを利用
○ スレッドはプロセスに比べて軽く起動
○ スレッド管理プログラムの自作不要
○ APサーバ部品との共有OK
○ 実行状況の確認OK
ジョブとステップ
→ジョブ(xml)はステップの入れ物
JCLっぽい。
ジョブオペレータ
ステップ
→『チャンク型』『バッチレット型』
→チャンク型:一括処理
I/O減らす仕組み(10回に1回書き込み)
補助機能
・リスナ
・コンテキスト
→JobContextとStepContext
・メトリック
→Stepに関する統計情報
初めまして。
返信削除結構気になっている本でした。
おはようございます。
返信削除要点がまとまっていて、ためになりました!