Java EE7徹底入門 標準Javaフレームワークによる高信頼性Webシステム構築
Java EE 7徹底入門 標準Javaフレームワークによる高信頼性Webシステムの構築
翔泳社
著者:寺田佳央、猪瀬淳、加藤田益嗣、羽生田恒永、梶浦美咲
監修:小田圭二
はじめに
謝辞
本書を読む前に
Chapter 1 Java EEの基礎知識
1.1 Java EEのこれまで
1.1.1 JDKからJ2EEへ
1.1.2 Java EEの誕生
1.1.3 Java EE7へ-3つのテーマ
1.2 Java EEの全体像
1.2.1 Java EEフレームワークの構成
1.2.2 Java EEに含まれる機能
1.2.3 Java EEの仕様策定
1.2.4 Java EEの実行環境とプロファイル
1.3 Java EEアプリケーション開発の基本
1.3.1 Java EEアプリケーションモデル
1.4 開発環境の準備
1.4.1 Oracle JDKのインストール
1.4.2 NetBeansのインストール
1.4.3 NetBeansの設定
1.5 サンプルアプリケーションの概要
1.5.1 ナレッジバンク
1.5.2 ナレッジバンクのセットアップ
1.6 まとめ
Chapter 2 プレゼンテーション層の開発――JSFの基本
2.1 JSF概要
2.1.1 JavaServer Faces(JSF)とは
2.2 JSFの構成要素
2.2.1 画面と処理(フェースレットとマネージドビーン)
2.2.2 マネージドビーンとスコープ
2.3 JSFの画面遷移
2.3.1 画面遷移の方法
2.3.2 画面のリダイレクト
2.4 JSFの内部処理
2.4.1 コンポーネント指向
2.4.2 ライフサイクル
2.5 JSFの基本設定
2.5.1フォルダ構成
2.5.2 設定ファイル
2.5.3 リソースフォルダ
2.6 フェースレットタグライブラリ
2.6.1 タグライブラリの種類
2.6.2 HTMLタグライブラリ(Standard HTML RenderKit Tag Library)
2.6.3 ヘッダーとボディ
2.6.4 リソース
2.6.5 文字の出力
2.6.6 リンクとボタン
2.6.7 入力フォーム
2.6.8 選択フォーム
2.6.9 パネル
2.6.10 テーブル
2.6.11 メッセージ
2.7 EL(Expression Language)
2.7.1 ELとは
2.7.2 オブジェクトの参照
2.7.3 暗黙オブジェクト
2.7.4 演算子
2.7.5 メソッドの呼び出し
Chapter 3 プレゼンテーション層の開発――JSFの応用 その1
3.1 入力チェック
3.1.1 入力チェック(バリデーション)とは
3.1.2 JSFのバリデーション
3.1.3 JSFのカスタムバリデータ
3.1.4 ビーンバリデーションとは
3.1.5 ビーンバリデーションのバリデータ
3.1.6 ビーンバリデーションのエラーメッセージ変更
3.1.7 ビーンバリデーションのバリデータ統合
3.1.8 ビーンバリデーションのカスタムバリデータ
3.2 コンバータ
3.2.1 コンバータの役割
3.2.2 標準のコンバータ
3.2.3 カスタムコンバータ
3.3 コンポーネントのカスタマイズ
3.3.1 コンポジットコンポーネント
3.3.2 より高度なコンポジットコンポーネント
3.4 フェースレットテンプレート
3.4.1 フェースレットテンプレートの利用
3.5 HTML5フレンドリマークアップ
3.5.1 パススルーアトリビュート
3.5.2 パススルーエレメント
3.6 Ajax
3.6.1 JSFのAjax対応
3.6.2 Ajaxを使用した入力チェック
3.6.3 Ajaxのイベントハンドリング
Chapter 4 プレゼンテーション層の開発――JSFの応用 その2
4.1 認証/認可
4.1.1 認証/認可の仕組み
4.1.2 アプリケーションサーバーの認証設定
4.1.3 アプリケーションの認証設定
4.1.4 ログイン/ログアウト機能の作成
4.2 国際化
4.2.1 JSFの国際化
4.3 ブックマーカビリティ
4.3.1 ブックマーカビリティとは
4.3.2 f:viewAction
4.3.3 f:viewParam
4.3.4 f:viewActionを使用した画面遷移
4.3.5 ブックマーカビリティとライフサイクル
4.4 フェーズリスナ
4.4.1 フェーズリスナの作成
4.5 Java EE 7で導入されたJSFの機能
4.5.1 JSF 2.2の追加機能
4.5.2 リソースライブラリコントラクト
4.5.3 Faces Flows
4.5.4 ステートレスビュー
4.6 まとめ
Chapter 5 ビジネスロジック層の開発――CDIの利用
5.1 CDIとEJB
5.1.1 ビジネスロジック層の部品
5.1.2 CDIとEJBの違い
5.2 DI(Dependency Injection)
5.2.1 DIとは
5.2.2 DIによる依存関係の解消
5.23 Java EEへのDI取り込む
5.3 CDI
5.4 CDI基本編
5.4.1 CDIコンテナによるインジェクション
5.4.2 CDIの型解決方法
5.5 CDI応用編
5.5.1 イベント処理
5.5.2 ステレオタイプの利用
5.5.3 プロデューサ/ディスポーザの利用
5.5.4 インターセプタとデコレータ
5.6 まとめ
Chapter 6 ビジネスロジック層の開発――EJBの利用
6.1 Enterprise Java Beans(EJB)
6.1.1 EJBとは
6.1.2 EJBの利点
6.1.3 EJBの種類
6.2 セッションビーン
6.2.1 セッションビーンとは
6.2.2 セッションビーンの種類
6.2.3 ステートレスセッションビーン
6.2.4 ステートフルセッションビーン
6.2.5 シングルトンセッションビーン
6.2.6 非同期処理
6.2.7 トランザクション
6.3 メッセージドリブンビーン
6.3.1 メッセージドリブンビーンとは
6.3.2 実装例
6.4 タイマー
6.4.1 タイマーとは
6.4.2 タイマーサービスのサンプル
6.4.3 @Scheduleの実装サンプル
6.5 EJBの設計
6.5.1 EJBメソッドの呼び出しに関する設計
6.5.2 ローカル呼び出しとリモート呼び出し
6.5.3 同期/非同期
6.5.4 負荷量
6.5.5 データベースアクセス
6.6 EJBのテスト
6.6.1 EJBのテストの必要性と難しさ
6.6.2 EJBテストの準備
6.7 まとめ
Chapter 7 データアクセス層の開発――JPAの基本
7.1 JPAの基礎知識
7.1.1 JPAの構成要素
7.1.2 エンティティクラスとエンティティオブジェクト
7.1.3 エンティティマネージャ
7.1.4 クエリ
7.1.5 永続化ユニット
7.1.6 JPAのメリット
7.2 エンティティの基本
7.2.1 エンティティクラスの実装
7.2.2 ID
7.2.3 リレーション
7.3 エンティティマネージャの基本
7.3.1 エンティティのライフサイクル
7.3.2 エンティティオブジェクトの作成と永続化
7.3.3 エンティティオブジェクトの取得と更新
7.3.4 エンティティの削除
7.3.5 デタッチ
7.4 クエリAPI
7.4.1 パラメータ
7.4.2 サンプルデータ
7.5 JPQL
7.5.1 JPQLの基本構文
7.5.2 条件指定
7.5.3 取得結果の並び替え
7.5.4 エンティティの結合
7.5.5 フェッチ
7.5.6 エンティティオブジェクトの集計
7.5.7 名前付きクエリ
7.6 Criteria API
7.6.1 Criteria APIの基本構文
7.6.2 条件指定
7.6.3 取得結果の並び替え
7.6.4 エンティティの結合
7.6.5 複数エンティティオブジェクトの一括取得
7.6.6 集計関数
7.6.7 サンプル
Chapter 8 データアクセス層の開発――JPAの応用
8.1 高度なエンティティの利用方法
8.1.1 フィールドに関する応用
8.2 ライフサイクルコールバック
8.3 エンティティクラスとテーブル構造
8.3.1 テーブル名とカラム名
8.3.2 索引
8.3.3 制約
8.4 トランザクション
8.5 キャッシュ
8.5.1 これまでのデータアクセス
8.5.2 キャッシュを利用したデータアクセス
8.5.3 JPAのキャッシュ
8.5.4 キャッシュとヒープ
8.5.5 プリロード
8.5.6 EclipseLink
8.6 永続化ユニット
8.7 環境構築手順
8.7.1 JDBCドライバ
8.7.2 コネクションプールの作成
8.7.3 JDBCリソースの作成
8.7.4 接続性ユニットの作成
8.8 アプリケーション開発手順
8.8.1 エンティティの作成
8.8.2 JPQLの開発
8.9 まとめ
Chapter 9 RESTful Webサービスの開発
9.1 Webサービスの基礎
9.1.1 Webサービスとは
9.1.2 RESTful Webサービスとは
9.1.3 RESTとHTTP
9.2 JAX-RSの基本
9.2.1 JAX-RSとは
9.2.2 サンプルアプリケーションにおけるJAX-RSの機能
9.3 RESTful Webサービス作成のための事前準備
9.3.1 RESTful Webサービスの認証方式
9.3.2 データクラス(DTO)
9.3.3 Applicationサブクラス
9.4 RESTサービスクラス(サーバー側)の作成
9.4.1 リソースクラスの構成要素
9.4.2 ①エンドポイントURIの設定
9.4.3 ②HTTPメソッドとリソースメソッドのバインド
9.4.4 ③メッセージボディのデータ形式指定
9.4.5 ④リクエスト情報のインジェクション
9.4.6 ⑤リクエストのメッセージボディの受け取り
9.4.7 ⑥入力チェック
9.4.8 ⑦レスポンスの定義
9.5 HTTPメソッドに応じた処理
9.5.1 ナレッジの検索(GETメソッドによる操作)
9.5.2 ナレッジの登録(POSTメソッドによる操作)
9.5.3 ナレッジの更新(PUTメソッドによる操作)
9.5.4 ナレッジの削除(DELETEメソッドによる操作)
9.5.5 例外クラス
9.6 RESTクライアントクラス(クライアント側)の作成
9.6.1 データクラス(DTO)
9.6.2 RESTクライアントクラス
9.7 メッセージフィルタクラス
9.7.1 メッセージフィルタとエンティティインターセプタ
9.7.2 サーバ側のフィルタ
9.7.3 クライアント側のフィルタ
9.8 まとめ
Chapter10 バッチアプリケーションの開発
10.1 jBatchの基本
10.1.1 バッチ処理とその特徴
10.1.2 jBatchとは
10.1.3 ジョブ
10.1.4 ステップ
10.1.5 補助機能
10.2 jBatchの利用――基本編
10.2.1 Job XMLの実装
10.2.2 チャンク型ステップの実装
10.2.3 ItemProcessorの実装
10.2.4 ItemWriterの実装
10.2.5 バッチレット型ステップの実装
10.2.6 ジョブ実行部分の実装
10.2.7 実行結果の確認
10.3 jBatchの利用――応用編
10.3.1 サンプル概要
10.4 ジョブの作成
10.4.1 Job XMLの実装
10.4.2 チャンクの実装
10.4.3 バッチレットの実装
10.4.4 バッチステータスと終了ステータス
10.4.5 ジョブ実行部分の実装
10.5 ジョブのフロー制御
10.5.1 コメント件数ランキング集計バッチの作成
10.5.2 コメント件数ランキング集計バッチの実行
10.5.3 ナレッジバンク日次バッチの作成
10.6 まとめ
索引