Java EE 6でサポートされたJAX-RSの特徴とRESTfulアーキテクチャ原則を使って、Javaでの分散Webサービスを設計開発する方法を学ぶ書籍。理論よりも実装に焦点を当て、RESTのアーキテクチャから実装までを豊富なサンプルコードとともに解説します。前半では、URIの決定方法、HTTPコンテンツネゴシエーション、HATEOASなどRESTとJAX-RSの概要について解説し、後半のワークブックでは、前半の技術解説で取り上げた設定、実行などを例題と共に学習します。JAX-RS仕様の解説と具体的な利用例からなる本書を読むことで、Javaの新しいデザイン手法であるアノテーションやインジェクションなどについても自然と学ぶことができるでしょう。柔軟なAPIを提供するJAX-RSを題材にRESTについて学べる本書は、Javaの最新動向を学習したいプログラマ/設計者必携の一冊です。
JavaによるRESTfulシステム構築
Bill Burke 著、arton 監訳、菅野 良二 訳
- TOPICS
- Web , Java
- 発行年月日
- 2010年08月
- PRINT LENGTH
- 348
- ISBN
- 978-4-87311-467-5
- 原書
- RESTful Java with JAX-RS
- FORMAT
- Print PDF
目次
目次 まえがき はじめに 第1部 RESTとJAX-RS標準 1章 RESTについて 1.1 RESTとHTTPの再生 1.2 RESTfulアーキテクチャの原則 1.2.1 アドレス可能性 1.2.2 制約された統一インターフェイス 1.2.3 統一インターフェイスがなぜ重要なのか 1.2.4 表現指向 1.2.5 ステートレスな通信 1.2.6 HATEOAS 1.3 まとめ 2章 RESTfulサービスの設計 2.1 オブジェクトモデル 2.2 URIのモデル化 2.3 データフォーマットの定義 2.3.1 読み取りと更新のフォーマット 2.3.2 作成のフォーマット 2.4 HTTPメソッドの割り当て 2.4.1 全オーダー、全顧客、全製品の参照 2.4.2 各オーダー別、各顧客別、各製品別のデータの取得 2.4.3 オーダー、顧客、製品の作成 2.4.4 オーダー、顧客、製品の更新 2.4.5 オーダー、顧客、製品の削除 2.4.6 オーダーのキャンセル 2.5 まとめ 3章 初めてのJAX-RSサービス 3.1 JAX-RS RESTfulサービスの開発 3.1.1 Customer: データクラス 3.1.2 CustomerResource: JAX-RSサービス 3.1.3 JAX-RSとJavaインターフェイス 3.1.4 継承 3.2 サービスのデプロイ 3.2.1 サーブレットコンテナへのデプロイメント 3.3 まとめ 4章 HTTPメソッドとURIマッチング 4.1 HTTPメソッドのバインド 4.1.1 HTTPメソッドの拡張 4.2 @Path 4.2.1 URIのバインド 4.2.2 @Path表現 4.2.3 マトリックスパラメータ 4.3 サブリソースロケータ 4.3.1 フルダイナミックディスパッチ 4.4 まとめ 5章 JAX-RSインジェクション 5.1 基本 5.2 @PathParam 5.2.1 複数のパスパラメータ 5.2.2 パスパラメータのスコープ(範囲) 5.2.3 PathSegmentとマトリックスパラメータ 5.2.4 プログラミングによるURI情報の取得 5.3 @MatrixParam 5.4 @QueryParam 5.4.1 プログラミングによるクエリパラメータ情報の取得 5.5 @FormParam 5.6 @HeaderParam 5.6.1 生のヘッダ 5.7 @CookieParam 5.8 共通の機能 5.8.1 自動的なJava型変換 5.8.2 @DefaultValue 5.8.3 @Encoded 5.9 まとめ 6章 JAX-RSコンテンツハンドラ 6.1 組み込みのコンテンツマーシャリング 6.1.1 javax.ws.rs.core.StreamingOutput 6.1.2 java.io.InputStream、java.io.Reader 6.1.3 java.io.File 6.1.4 byte[] 6.1.5 String、char[] 6.1.6 MultivaluedMap<String, String>とフォーム入力 6.1.7 javax.xml.transform.Source 6.2 JAXB 6.2.1 JAXBについて 6.2.2 JAXB JAX-RSハンドラ 6.2.3 JAXBとJSON 6.2.4 JSONとJSONスキーマ 6.3 カスタムマーシャリング 6.3.1 MessageBodyWriter 6.3.2 MessageBodyReader 6.3.3 ライフサイクルと環境 6.4 まとめ 7章 レスポンスコード、複雑なレスポンス、そして例外処理 7.1 デフォルトのレスポンスコード 7.1.1 成功時のレスポンス 7.1.2 エラー時のレスポンス 7.2 複雑なレスポンス 7.2.1 Cookieを返す 7.2.2 Status列挙型 7.2.3 javax.ws.rs.core.GenericEntity 7.3 例外処理 7.3.1 javax.ws.rs.WebApplicationException 7.3.2 例外マッピング 7.4 まとめ 8章 HTTPコンテンツネゴシエーション 8.1 Connegについて 8.1.1 優先順位 8.2 言語のネゴシエーション 8.3 エンコードのネゴシエーション 8.4 JAX-RSとConneg 8.4.1 メソッドディスパッチ 8.4.2 ConnegとJAXBを利用する 8.4.3 複雑なネゴシエーション 8.4.4 URIパターンによるネゴシエーション 8.5 コンテンツネゴシエーションの活用 8.5.1 新しいメディアタイプを作成する 8.5.2 柔軟性のあるスキーマ 8.6 まとめ 9章 HATEOAS 9.1 HATEOASとWebサービス 9.1.1 Atomリンク 9.1.2 WebサービスでHATEOASを使用する利点 9.1.3 リンクヘッダとAtomリンク 9.2 HATEOASとJAX-RS 9.2.1 UriBuilderを使用したURIの構築 9.2.2 UriInfoを使用した相対URI 9.3 まとめ 10章 JAX-RSアプリケーションをスケールする 10.1 キャッシング 10.1.1 HTTPキャッシング 10.1.2 Expiresヘッダ 10.1.3 Cache-Control 10.1.4 再検証と条件付きGET 10.2 同時並行性 10.2.1 JAX-RSと条件付き更新 10.3 まとめ 11章 デプロイメントと統合 11.1 デプロイメント 11.1.1 Applicationクラス 11.1.2 JAX-RS非対応コンテナ内のデプロイメント 11.1.3 JAX-RS対応コンテナ内のデプロイメント 11.1.4 Java EE 6内のデプロイメント 11.2 設定 11.2.1 従来のJava EEコンテナ 11.2.2 Java EE 6コンテナ内のデプロイメント 11.3 EJBとの統合 11.4 Springとの統合 11.5 まとめ 12章 JAX-RSのセキュア化 12.1 認証 12.1.1 ベーシック認証 12.1.2 ダイジェスト認証 12.1.3 クライアント証明書による認証 12.2 認可 12.3 JAX-RSにおける認証と認可 12.3.1 暗号化の実施 12.3.2 認可に関するアノテーション 12.3.3 プログラミングによるセキュリティの強化 12.4 まとめ 13章 RESTful Javaクライアント 13.1 java.net.URL 13.1.1 キャッシング 13.1.2 認証 13.1.3 利点と欠点 13.2 Apache HttpClient 13.2.1 認証 13.2.2 利点と欠点 13.3 RESTEasyクライアントフレームワーク 13.3.1 認証 13.3.2 利点と欠点 13.4 RESTEasyクライアントプロキシ 13.4.1 利点と欠点 13.5 まとめ 14章 JAX-RS実装 14.1 Jersey 14.1.1 組み込み可能なJersey 14.1.2 クライアントAPI 14.1.3 WADL 14.1.4 データフォーマット 14.1.5 MVC(モデル、ビュー、コントローラ) 14.1.6 コンポーネント統合 14.2 Apache CXF 14.2.1 リクエストパラメータをbeanに集約する 14.2.2 特定の型へのリクエストパラメータ変換 14.2.3 サブリソースの静的な解決 14.2.4 クライアントAPI 14.2.5 JAX-RSアノテーションなしでのサービスのサポート 14.2.6 リクエストとレスポンスの横取り 14.2.7 ファーストクラス市民としてのXSLTとXPathの使用を奨励 14.2.8 保留呼び出しのサポート 14.2.9 マルチパートフォーマットのサポート 14.2.10 分散OSGi RIとの統合 14.2.11 WADLのサポート 14.2.12 コンポーネント統合 14.3 JBoss RESTEasy 14.3.1 組み込みコンテナ 14.3.2 非同期HTTP 14.3.3 インターセプターフレームワーク 14.3.4 クライアント「ブラウザ」キャッシュ 14.3.5 サーバーサイドキャッシング 14.3.6 GZIP圧縮 14.3.7 データフォーマット 14.3.8 コンポーネント統合 14.4 まとめ 第2部 JAX-RSワークブック 15章 ワークブックについて 15.1 RESTEasyとサンプルコードのインストール 15.2 サンプルコードの実行に必要な要件と構造 15.2.1 サンプルコードのディレクトリ構造 15.2.2 環境の設定 16章 3章のサンプルコード 16.1 サンプルプログラムのビルドと実行 16.1.1 pom.xmlの解説 16.1.2 ビルドの実行 16.2 ソースコードをチェックする 17章 4章のサンプルコード 17.1 サンプルex04_1: HTTPメソッド拡張 17.1.1 サンプルプログラムのビルドと実行 17.1.2 サーバーコード 17.1.3 クライアントコード 17.2 サンプルex04_2:正規表現を用いた@Path 17.2.1 サンプルプログラムのビルドと実行 17.2.2 サーバーコード 17.2.3 クライアントコード 17.3 サンプルex04_3:サブリソースロケータ 17.3.1 サンプルプログラムのビルドと実行 17.3.2 サーバーコード 17.3.3 クライアントコード 18章 5章のサンプルコード 18.1 サンプルex05_1:URI情報のインジェクション 18.1.1 サーバーコード 18.1.2 クライアントコード 18.1.3 サンプルプログラムのビルドと実行 18.2 サンプルex05_2:フォームとCookie 18.2.1 サーバーコード 18.2.2 サーバー設定 18.2.3 サンプルプログラムのビルドと実行 19章 6章のサンプルコード 19.1 サンプルex06_1:JAXBの使用 19.1.1 クライアントコード 19.1.2 pom.xmlへの変更 19.1.3 サンプルプログラムのビルドと実行 19.2 サンプルex06_2:コンテンツハンドラの作成 19.2.1 コンテンツハンドラコード 19.2.2 リソースクラス 19.2.3 アプリケーションクラス 19.2.4 クライアントコード 19.2.5 サンプルプログラムのビルドと実行 20章 7章のサンプルコード 20.1 サンプルex07_1:ExceptionMapper 20.1.1 クライアントコード 20.1.2 サンプルプログラムのビルドと実行 21章 8章のサンプルコード 21.1 サンプルex08_1:JAX-RSを使用したconneg 21.1.1 クライアントコード 21.1.2 サンプルプログラムのビルドと実行 21.2 サンプルex08_2:URLパターンを使用したConneg 21.2.1 サーバーコード 21.2.2 サンプルプログラムのビルドと実行 22章 9章のサンプルコード 22.1 サンプルex09_1:Atomリンク 22.1.1 サーバーコード 22.1.2 クライアントコード 22.1.3 サンプルプログラムのビルドと実行 22.2 サンプルex09_2:リンクヘッダ 22.2.1 サーバーコード 22.2.2 クライアントコード 22.2.3 サンプルプログラムのビルドと実行 23章 10章のサンプルコード 23.1 サンプルex10_1:キャッシングと同時並行の更新 23.1.1 サーバーコード 23.1.2 クライアントコード 23.1.3 サンプルプログラムのビルドと実行 24章 11章のサンプルコード 24.1 サンプルex11_1:EJBとJAX-RS 24.1.1 プロジェクト構造 24.1.2 EJBプロジェクト 24.1.3 WARプロジェクト 24.1.4 EARプロジェクト 24.1.5 サンプルプログラムのビルドと実行 24.2 サンプルex11_2:SpringとJAX-RS 24.2.1 サンプルプログラムのビルドと実行 監訳者あとがき 索引