The Backyard - JavaWebServicesUpAndRunning Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
![[Java Web Services: Up and Running|http://www.amazon.co.jp/gp/product/059652112X?ie=UTF8&tag=leclatdesjour-22&linkCode=as2&camp=247&creative=7399&creativeASIN=059652112X]]
[[Java Web Services: Up andRunning|http://ecx.images-amazon.com/images/I/51PrFQXe7fL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU09_AA160_.jpg]]Running|http://ecx.images-amazon.com/images/I/51PrFQXe7fL._SL160_PIsitb-sticker-arrow-dp-18_SH30_OU09_AA160_.jpg]]
!!ターゲット
筆者が念頭に置いているのは、Java Webサービスの開発と、あらゆるWebサービスのJavaクライアントの開発に興味を持つプログラマーということである(P.ix)。したがって、本書はコードを主体とした解説書となっている。また、本文中で何度か「コマーシャルグレード」という言葉を使い、現実に適用できるプログラムを開発できることを目的としていることがうかがえる。
現状のWebサービスには、SOAPとRESTの2つがある。特に筆者が力点を置いているのはSOAPである。
読者の理解を助けるために、コアJAVA APIだけを利用してサーバー側とクライアント側の両方を実装し、内部で交換されるメッセージの解説というレベルから説明をしている。
!!!問題点
現状SOAPは、SOAの文脈での利用がほとんどである(これは筆者も言及している)。SOAでは、開発者は基本的にベンダーの提供するツールを利用する。ここで説明されている実装レベルの解説を必要とする者はほとんど存在しないのではないかと想像される。また、SOAでSOAPを適用する個所について考慮する必要があるのは、エンタープライズシステム開発者のうち、アーキテクトだけであり、人数的にもターゲットは非常に狭いと思われる。
「SOAを支えるテクノロジーSOAPとインターネットの駆動エンジンREST」といったような対比的な2つのテクノロジーの両方を実践的に学べるということは良い点である。
!!1章
コアJavaのみを利用した単純なSOAPサーバーとクライアントの実装を通して、JavaによるWebサービスの低レベルな部分について解説する。
また、SOAPが言語ニュートラルなサービスを提供することを示すために、PerlおよびRubyによるクライアント実装を示す。
実際に生成されるWSDLの説明や、リクエスト/レスポンスでワイア上を流れるHTTPのパケットの解説、ネットワークキャプチャの採取方法の説明とツールの紹介まで行っていることから、筆者がWebサービスの原理を丁寧に解説しようと考えていることがわかり、好感が持てる。説明は主にUnixを想定しているが、Windowsを利用する場合の相違についても多少は触れている(例:環境変数の指定方法)。
P.11 Ruby 1.9.1以降、soapライブラリは添付ライブラリからドロップしているので、ここに示されたコードはそのままでは動かない(1.8.7では動く)。
P.13 mainメソッドの引数の記述方法-main(String args[])が、P.7-main(String[] args)-と異なる。P.7の記法が一般的。
P.14 リストでは、変数eifを利用しているが、本文では変数portを利用している。
!!2章
本章は、JWSのツールを利用したWSDLからのクライアント作成を掘り下げる。ラップ、アンラップの2種類のDocumentタイプクライアントの生成方法、DocumentとRpcの得失、非同期RPCなど。
記述が整理されていること、例が具体的なことから、SOAPクライアントを設計/実装する場合の良い指針となっている。
また、コードファーストかコントラクトファーストかの得失など、実際にインターフェイスを決定する上であまり語られることがない点について説明しているのも良い。
!!!問題点
Amazon E-Commerceをサンプルにしているが、8月以降名称(Amazon Associate Web Service (p.46) → Product Advertising API)とAPIが変わるため、修正すべきである(が、SOAPについてはWS-Iとなるため、本章の方法とは合わない。別のサービスへの乗り換えも検討すべき)。というのは、本書の特徴である、コードを実際に試すことができなくなるからだ。
!!3章
SOAPの実装について2章をさらに掘り下げた内容。
SOAPアタッチメントや、バイナリデータの扱いなど、軽く流した場合の説明には絶対に出現しないが、現実の世界のシステムでは必須となる内容について書かれている点が良い。
!!4章
JavaでRESTfulスタイルのAPIを利用するための方法を示す。
RESTfulスタイルは、日本のJava開発者にはそれほど理解されていないと想像できるため、興味深く読まれると思う。ただし、逆に、「無駄な内容の章」という評価を受ける可能性もある。
ただし、本来LL的に利用するのが向いているRESTに、SOAP的な機械補助を加えるWADLのようなあまり取り上げられない、しかし筆者の方向性に合ったトピック(REST側の大多数にとっては意味がなく、SOAP側の大多数にとっては元々RESTは興味の範囲外)について取り上げている点は興味深い。
P.132 Perlのサンプルが本文の説明(The client sends two GET requets...)と合っていない(initial Perl clientという書き方で途中という意味かも知れない)。またP.133の出力例で「The GET Req...」の行は出力されない。
P.170 Amazon E-CommerceのRESTfulスタイルのAPI変更
!!5章
HTTPS、BASIC認証、ダイジェスト認証という、トランスポートレイヤでのセキュリティ/認証機構のJavaプログラムからの扱いや設定方法にはじまり、WS-Iの概念の説明、SOAPヘッダを利用したシグネチャの仕組みとプログラムからの制御について扱う。
どのレイヤでどのようなセキュリティ設定が可能かをきちんと説明しているので、有益な章である。
!!6章
EJBでのWebサービスをMOMの利用方法と合わせて説明。
情報システムを疎結合ベースで構築する場合、遅延実行によるスケールの確保、情報欠落防止のためにはMOMの利用が不可欠である。
当然、押さえておくべき項目なので、抜けがない印象を受ける。
!!7章
SOAPとREST、どちらを使うかについて、まずSOAPのRPCとしての歴史、メッセージングとしての現在についての興味深い読み物。最後に結論として、SOAPについてはHTTP/HTTPS限定として考えるべきだし、RESTについては将来WADLが標準となればSOAPと完全に共存できるけれどそれまでは単なるRESTについても目配りすべきという、わかったようなわからないようなアドバイスで終わり。
[[Java Web Services: Up and
!!ターゲット
筆者が念頭に置いているのは、Java Webサービスの開発と、あらゆるWebサービスのJavaクライアントの開発に興味を持つプログラマーということである(P.ix)。したがって、本書はコードを主体とした解説書となっている。また、本文中で何度か「コマーシャルグレード」という言葉を使い、現実に適用できるプログラムを開発できることを目的としていることがうかがえる。
現状のWebサービスには、SOAPとRESTの2つがある。特に筆者が力点を置いているのはSOAPである。
読者の理解を助けるために、コアJAVA APIだけを利用してサーバー側とクライアント側の両方を実装し、内部で交換されるメッセージの解説というレベルから説明をしている。
!!!問題点
現状SOAPは、SOAの文脈での利用がほとんどである(これは筆者も言及している)。SOAでは、開発者は基本的にベンダーの提供するツールを利用する。ここで説明されている実装レベルの解説を必要とする者はほとんど存在しないのではないかと想像される。また、SOAでSOAPを適用する個所について考慮する必要があるのは、エンタープライズシステム開発者のうち、アーキテクトだけであり、人数的にもターゲットは非常に狭いと思われる。
「SOAを支えるテクノロジーSOAPとインターネットの駆動エンジンREST」といったような対比的な2つのテクノロジーの両方を実践的に学べるということは良い点である。
!!1章
コアJavaのみを利用した単純なSOAPサーバーとクライアントの実装を通して、JavaによるWebサービスの低レベルな部分について解説する。
また、SOAPが言語ニュートラルなサービスを提供することを示すために、PerlおよびRubyによるクライアント実装を示す。
実際に生成されるWSDLの説明や、リクエスト/レスポンスでワイア上を流れるHTTPのパケットの解説、ネットワークキャプチャの採取方法の説明とツールの紹介まで行っていることから、筆者がWebサービスの原理を丁寧に解説しようと考えていることがわかり、好感が持てる。説明は主にUnixを想定しているが、Windowsを利用する場合の相違についても多少は触れている(例:環境変数の指定方法)。
P.11 Ruby 1.9.1以降、soapライブラリは添付ライブラリからドロップしているので、ここに示されたコードはそのままでは動かない(1.8.7では動く)。
P.13 mainメソッドの引数の記述方法-main(String args[])が、P.7-main(String[] args)-と異なる。P.7の記法が一般的。
P.14 リストでは、変数eifを利用しているが、本文では変数portを利用している。
!!2章
本章は、JWSのツールを利用したWSDLからのクライアント作成を掘り下げる。ラップ、アンラップの2種類のDocumentタイプクライアントの生成方法、DocumentとRpcの得失、非同期RPCなど。
記述が整理されていること、例が具体的なことから、SOAPクライアントを設計/実装する場合の良い指針となっている。
また、コードファーストかコントラクトファーストかの得失など、実際にインターフェイスを決定する上であまり語られることがない点について説明しているのも良い。
!!!問題点
Amazon E-Commerceをサンプルにしているが、8月以降名称(Amazon Associate Web Service (p.46) → Product Advertising API)とAPIが変わるため、修正すべきである(が、SOAPについてはWS-Iとなるため、本章の方法とは合わない。別のサービスへの乗り換えも検討すべき)。というのは、本書の特徴である、コードを実際に試すことができなくなるからだ。
!!3章
SOAPの実装について2章をさらに掘り下げた内容。
SOAPアタッチメントや、バイナリデータの扱いなど、軽く流した場合の説明には絶対に出現しないが、現実の世界のシステムでは必須となる内容について書かれている点が良い。
!!4章
JavaでRESTfulスタイルのAPIを利用するための方法を示す。
RESTfulスタイルは、日本のJava開発者にはそれほど理解されていないと想像できるため、興味深く読まれると思う。ただし、逆に、「無駄な内容の章」という評価を受ける可能性もある。
ただし、本来LL的に利用するのが向いているRESTに、SOAP的な機械補助を加えるWADLのようなあまり取り上げられない、しかし筆者の方向性に合ったトピック(REST側の大多数にとっては意味がなく、SOAP側の大多数にとっては元々RESTは興味の範囲外)について取り上げている点は興味深い。
P.132 Perlのサンプルが本文の説明(The client sends two GET requets...)と合っていない(initial Perl clientという書き方で途中という意味かも知れない)。またP.133の出力例で「The GET Req...」の行は出力されない。
P.170 Amazon E-CommerceのRESTfulスタイルのAPI変更
!!5章
HTTPS、BASIC認証、ダイジェスト認証という、トランスポートレイヤでのセキュリティ/認証機構のJavaプログラムからの扱いや設定方法にはじまり、WS-Iの概念の説明、SOAPヘッダを利用したシグネチャの仕組みとプログラムからの制御について扱う。
どのレイヤでどのようなセキュリティ設定が可能かをきちんと説明しているので、有益な章である。
!!6章
EJBでのWebサービスをMOMの利用方法と合わせて説明。
情報システムを疎結合ベースで構築する場合、遅延実行によるスケールの確保、情報欠落防止のためにはMOMの利用が不可欠である。
当然、押さえておくべき項目なので、抜けがない印象を受ける。
!!7章
SOAPとREST、どちらを使うかについて、まずSOAPのRPCとしての歴史、メッセージングとしての現在についての興味深い読み物。最後に結論として、SOAPについてはHTTP/HTTPS限定として考えるべきだし、RESTについては将来WADLが標準となればSOAPと完全に共存できるけれどそれまでは単なるRESTについても目配りすべきという、わかったようなわからないようなアドバイスで終わり。