企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!
コンピュータ間の情報のやりとりは常日ごろから行われています。昨今では、物理的に離れたコンピュータ上にあるアプリケーション同士によるネットワークを通しての情報のやりとりが重要となっています。
ネットワーク上で最も一般的でシンプルなアクセス方法は、HTTPを用いてWebブラウザを利用しサーバから情報を取得することです。このような“システム”対“人”の方法は、アプリケーション同士の通信でも用いることができますが、“システム”対“システム”のサービスは、一般的に「Webサービス」と呼ばれています。
Webサービスとは、ネットワーク上にある異なるアプリケーション同士が相互に「メッセージ」を送受信してアプリケーションを連携させる技術のことです。「Webサービス」と、ひと言でいっても、幅広い範囲の技術を用いて構成されています。メッセージについては、前回の「非同期処理と疎結合ができる「メッセージング」の常識」を参照しておいてください。
今回は、Webサービス技術の常識的な知識と、Webサービスに関連するAPIやJBossのフレームワークについて説明します。
Webサービスを構成する技術の中でも、中核をなすとされているのが、SOAPやWSDL、RESTです。これらの関係は、下図のように示すことができます。
以降で、1つ1つ解説していきます。
SOAPとは、Webサービスで使用されるメッセージのフォーマットやルールなどを決めた規約です。HTTPプロトコルを利用して通信が行われています(SOAP over HTTP)。
SOAPのインターフェイスは、XMLベースのWSDL(Web Services Description Language)で定義されます。WSDLには、Webサービスが「どこにあるか」「どのようなメッセージフォーマットを用いるのか」「どのような通信プロトコルを用いるのか」など、Webサービスを利用するうえで必要な情報が記述されています。
また、最近ではSOAPやWSDLの代わりに「REST(REpresentational State Transfer)」と呼ばれる手法が用いられることがあります。RESTは、HTTPを使って通信を行う手法ですが、本稿では触れません。下記連載などを参考にしてください。
Spreadsheets Data APIを使うための基礎知識
SaaS形式のさまざまなGoogle Appsを操作するGData APIの1つ、Googleスプレッドシートを操作するSpreadsheets Data APIのJavaライブラリの使い方を基本から紹介する入門連載
「リッチクライアント & 帳票」フ ォーラム
このほか、「UDDI(Universal Description, Discovery and Integration)」と呼ばれるWebサービスの検索システムがあります。
「Webサービス提供者は、これを用いてWebサービスを登録し、利用者はUDDIから検索してWebサービスを利用する」仕組みですが、現状ではほとんど利用されていません。その理由は、そもそもUDDIの利用は必須ではなく、接続先が分かっていればWebサービスを検索して利用する仕組みは必要ないからです。
またUDDIは、「Webの検索エンジンのようにWebサービスの情報を返すだけである」点や、「同様なWebサービスであっても提供者によってインターフェイスがまったく違う」点などにより、利用するにはハードルが高いものとなっています。
ほかにも、Webサービスの周辺仕様として主に以下のような仕様があります。
これらのWebサービス技術を利用した「マッシュアップ(Mashup)」と呼ばれる手法があります。マッシュアップとは、さまざまなWebサービスを組み合わせてあたかも1つの機能として動作するアプリケーションを作成することです。このように、Webサービスを利用することで、新たなアプリケーションを作成する際の手間やコストの削減にもつながります。
これらWebサービスの機能を実現するために、Java言語では「JAX-WS」というAPIがあり、「JSR 220」として標準仕様が決められています。
また本連載では、JBossに関連するものを1つ1つ紹介していますが、Webサービスに関していうと、JAX-WSを実装した「JBoss WS」があります。
JAX-WS(Java API for XML-Based Web Services)はXMLをベースにし、通信には主にSOAPやRESTを使ったWebサービスを扱うためのAPIです。
以前は「JAX-RPC(Java API for XML Based RPC)」と呼ばれており、JavaプログラムでRPCによる遠隔プログラム呼び出しを行うためのAPI仕様となっています。JAX-WSのバージョンは2.0であり、JAX-RPC 1.1の後継に位置するので、JAX-WSのバージョンに1.0などはありません。
JAX-WSで送受信されるメッセージは、JavaデータからJAX-WSによって自動的に作成されます。XMLをベースにしているため、異なるプラットフォーム間との連携でも送受信が可能です。
JavaデータとXMLデータのマッピングには「JAXB(The Java Architecture for XML Binding)」が用いられています。JAXBとは、JavaオブジェクトをXMLに変換する仕様であり、逆にXMLからJavaオブジェクトへの変換も可能です。
このJAXBを用いることで、特に意識することなくJavaオブジェクトとXMLの相互マッピングが可能です。そのため、Webサービスを構築する場合、ユーザーはプロトコルをまったく意識することなくメッセージの送受信ができ、開発時の負担が軽減されます。
またJAX-WSによる通信は、利用者のJavaプログラムおよび提供者のJavaプログラムに具体的な処理は必要ありません。それは、利用者のJavaプログラムは「Stub」、提供者のJavaプログラムは「Tie」が通信の処理を行います。この「Stub」「Tie」は自動的に生成されるものであり、これも開発時の負担を軽減させます。
これらの技術により、通常のメソッド呼び出しと同様なコーディングをするだけでSOAPを使ったXMLの送受信を実現できます。以下の、JAX-WSを使った構成のイメージをご覧ください。
次ページからは、簡単なサンプルを作ってJBoss WSを実際に動作させてみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.