連載
» 2010年02月26日 00時00分 UPDATE

企業システムの常識をJBossで身につける(6):いまさら聞けない「Webサービス」の常識 (1/4)

企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!

[上川伸彦,株式会社ビーブレイクシステムズ]

Webを使ったサービス? 「Webサービス」って何?

 コンピュータ間の情報のやりとりは常日ごろから行われています。昨今では、物理的に離れたコンピュータ上にあるアプリケーション同士によるネットワークを通しての情報のやりとりが重要となっています。

 ネットワーク上で最も一般的でシンプルなアクセス方法は、HTTPを用いてWebブラウザを利用しサーバから情報を取得することです。このような“システム”対“人”の方法は、アプリケーション同士の通信でも用いることができますが、“システム”対“システム”のサービスは、一般的に「Webサービス」と呼ばれています。

 Webサービスとは、ネットワーク上にある異なるアプリケーション同士が相互に「メッセージ」を送受信してアプリケーションを連携させる技術のことです。「Webサービス」と、ひと言でいっても、幅広い範囲の技術を用いて構成されています。メッセージについては、前回の「非同期処理と疎結合ができる「メッセージング」の常識」を参照しておいてください。

 今回は、Webサービス技術の常識的な知識と、Webサービスに関連するAPIやJBossのフレームワークについて説明します。

SOAP、WSDL、REST?Webサービスの中核技術群

 Webサービスを構成する技術の中でも、中核をなすとされているのが、SOAPWSDLRESTです。これらの関係は、下図のように示すことができます。

図1 RPCの同期処理 図1 Webサービスにおける基本関係図

 以降で、1つ1つ解説していきます。

SOAP

 SOAPとは、Webサービスで使用されるメッセージのフォーマットやルールなどを決めた規約です。HTTPプロトコルを利用して通信が行われています(SOAP over HTTP)。

WSDL

 SOAPのインターフェイスは、XMLベースのWSDL(Web Services Description Language)で定義されます。WSDLには、Webサービスが「どこにあるか」「どのようなメッセージフォーマットを用いるのか」「どのような通信プロトコルを用いるのか」など、Webサービスを利用するうえで必要な情報が記述されています。

REST

 また、最近ではSOAPやWSDLの代わりに「REST(REpresentational State Transfer)」と呼ばれる手法が用いられることがあります。RESTは、HTTPを使って通信を行う手法ですが、本稿では触れません。下記連載などを参考にしてください。

r5icon.gif

Spreadsheets Data APIを使うための基礎知識
SaaS形式のさまざまなGoogle Appsを操作するGData APIの1つ、Googleスプレッドシートを操作するSpreadsheets Data APIのJavaライブラリの使い方を基本から紹介する入門連載
リッチクライアント & 帳票」フ ォーラム

UDDI

 このほか、「UDDI(Universal Description, Discovery and Integration)」と呼ばれるWebサービスの検索システムがあります。

 「Webサービス提供者は、これを用いてWebサービスを登録し、利用者はUDDIから検索してWebサービスを利用する」仕組みですが、現状ではほとんど利用されていません。その理由は、そもそもUDDIの利用は必須ではなく、接続先が分かっていればWebサービスを検索して利用する仕組みは必要ないからです。

 またUDDIは、「Webの検索エンジンのようにWebサービスの情報を返すだけである」点や、「同様なWebサービスであっても提供者によってインターフェイスがまったく違う」点などにより、利用するにはハードルが高いものとなっています。

Webサービスの周辺仕様

 ほかにも、Webサービスの周辺仕様として主に以下のような仕様があります。 

  • WS-Security
    デジタル署名、ユーザー認証、メッセージの暗号化の仕組みを提供
  • WS-Addressing
    メッセージ情報ヘッダをXMLメッセージに保持する仕組みを提供
  • WS-Policy
    XMLでセキュリティポリシーなどのポリシー記述や、それを外部への公開する仕組みを提供
  • WS-Reliable Messaging
    SOAPメッセージにおいて、信頼性の高いメッセージ配信を提供
  • WS-Coordination
    複数のWebサービスを連携し、相互接続するための仕組みを提供

マッシュアップ

 これらのWebサービス技術を利用した「マッシュアップ(Mashup)」と呼ばれる手法があります。マッシュアップとは、さまざまなWebサービスを組み合わせてあたかも1つの機能として動作するアプリケーションを作成することです。このように、Webサービスを利用することで、新たなアプリケーションを作成する際の手間やコストの削減にもつながります。

JAX-WS、JBoss WS ― JavaのWebサービス実装

 これらWebサービスの機能を実現するために、Java言語では「JAX-WS」というAPIがあり、「JSR 220」として標準仕様が決められています。

 また本連載では、JBossに関連するものを1つ1つ紹介していますが、Webサービスに関していうと、JAX-WSを実装した「JBoss WS」があります。

JAX-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などはありません。

図2 JAX-RPCの概観 図2 JAX-RPCの概観(記事「Webサービスの標準サポート『JAX-RPC』」より引用)Webサービスの標準サポート『JAX-RPC』」より引用)

 JAX-WSで送受信されるメッセージは、JavaデータからJAX-WSによって自動的に作成されます。XMLをベースにしているため、異なるプラットフォーム間との連携でも送受信が可能です。

JAXBとは

 JavaデータとXMLデータのマッピングには「JAXB(The Java Architecture for XML Binding)」が用いられています。JAXBとは、JavaオブジェクトをXMLに変換する仕様であり、逆にXMLからJavaオブジェクトへの変換も可能です。

 このJAXBを用いることで、特に意識することなくJavaオブジェクトとXMLの相互マッピングが可能です。そのため、Webサービスを構築する場合、ユーザーはプロトコルをまったく意識することなくメッセージの送受信ができ、開発時の負担が軽減されます。

StubとTie

 またJAX-WSによる通信は、利用者のJavaプログラムおよび提供者のJavaプログラムに具体的な処理は必要ありません。それは、利用者のJavaプログラムは「Stub」、提供者のJavaプログラムは「Tie」が通信の処理を行います。この「Stub」「Tie」は自動的に生成されるものであり、これも開発時の負担を軽減させます。

 これらの技術により、通常のメソッド呼び出しと同様なコーディングをするだけでSOAPを使ったXMLの送受信を実現できます。以下の、JAX-WSを使った構成のイメージをご覧ください。

図2 JAX-WSの構成図 図2 JAX-WSの構成図

 次ページからは、簡単なサンプルを作ってJBoss WSを実際に動作させてみましょう。

       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。