2011-12-8作成

 ■JavaにおけるXMLの利用

 ■別のシステム構成

 ここまではクライアントとしてWebブラウザを想定し、HTTPでサーバーにアクセスして結果をHTMLで返すという構成を説明してきました。クライアントからの要求を処理するサーバーアプリをJavaで実装する場合の構成としては、「標準的なプログラム構成」で説明したようにサーブレットとJSPを連携させる方法を採ることにしました。

 ここではこれまでとは別パターンのシステム構成について説明していきます。とはいうもののサーブレットとJSPを連携させるサーバー側のプログラム構成は変わりません。

 具体的な例として、2005年に私が構築したあるシステムの構成概要を図示します。
クライアントにWindows.NETアプリを使用した構成

背景

 2005年というとちょうどGoogle EarthやMapが話題になり、RIA(Rich Internet Application:リッチ・インターネット・アプリケーション)やリッチクライアントという言葉が出始めた頃です。

 このシステム要件ですがUIに対するユーザー要求が細かく、入力項目や表示項目も多いものでした。そのためWeb系システムを採用することは決まっていましたが、通常のHTMLを利用したブラウザ画面では実現できないだろうという結論はすぐに出ました。

 一つの解法としてJavascriptを駆使するというのはありましたが、当時は効果的なJavascriptの開発ツールも無く開発効率に対する懸念がありました。

 そのためリッチクライアントとして.NET Frameworkを採用し、Windowsアプリとしてクライアントを構築することにしました。

仕組み

 クライアントはWindowsアプリとして構築するものの、サーバーへのアクセスはHTTPを使用しています。そのためサーバーからは通常のブラウザによるアクセスと同等のものに見えます。

 違っているのはサーバーに送信するデータがXMLにまとめられていることです。

 またサーバーでの処理結果もXMLにまとめてデータとしてクライアントに返しています。クライアントは受け取ったXMLデータを元にWindowsアプリとして画面表示を行います。

サーバーへの送信データ

 クライアントではサーバーに送信するデータをXMLで記述し、全体を一つの文字列としてサーバーに送ります。

 イメージとしてはHTMLで作成した画面の場合の、テキストボックスやテキストエリアで入力された文字列データを受け取ると中身がXMLになっている。そのXMLを解析して個別のデータを使用する、という仕組みです。

 画面に入力域が1つだけあり、getParameter("パラメータ名")で受け取った文字列をXML解析することにより個々のデータを利用するというイメージです。

クライアントへの応答データ

 サーバーでの処理結果をクライアントに返す際にもXMLを利用しています。このときにJSPを使用しました。

 JSPはHTMLコード中にJavaコードを記述しますが、HTMLの代わりにXMLでも出来るんじゃないか。単純にそう思って試してみると上手く動作しました。それでこの仕組みを使うことにしました。

 あとで知ったのですが、これはJSP XMLという仕様でJSP仕様1.2で正式にサポートされていたようです。

 ということでクライアントへの応答データ作成にはJSPを使用し、ただしXML中にJavaコードを記述する仕組みを使っています。

 当時(2004年から2005年頃)はWebサービスの利用手段として送信データにXMLを使う仕組みとしてSOAPというものが脚光を浴びてました。今後はSOAPが一般化して広まるだろうと、色々な雑誌等でも特集が組まれていたものです。

 しかしSOAP(Simple Object Access Protcol)はSimpleという名とは裏腹に、動かすためにはやれUDDI定義だのWSDL定義だのと面倒くさいものでした。そのためSOAPは使わず普通にHTTPでXMLを利用する仕組みにしました。

 今ではSOAPはほとんど目にしないところを見ると当時の判断は正しかったようです。その後、私が採用したような仕組みはREST(Representational State Transfer)という名前で呼ばれるようになっていたようです。

 ここではXML中にJavaコードを記述する形のJSPについて説明しました。クライアントが通常のブラウザで、ただし画面表示にJavascriptを利用する場合はXMLよりJSON(JavaScript Object Notation)を使用したほうが便利かもしれません。

 その場合にJSON中にJavaコードを記述する形のJSPも実現可能かもしれませんが、生憎まだ試してません。ぜひ実験してみてください。

 ■JavaでのXMLの利用法

 JavaでXMLを利用、解析する方法としてはDOM(Document Object Model)SAX(Simple API for XML)の2種類があります。

 DOMの場合はXML文書をを指定して解析することにより、結果としてDOMツリーが得られます。このDOMツリーからデータを取得するという手順です。直接DOMツリーを参照したり、あるいはこれを解析してデータ保持クラスを作成したりします。

 SAXの場合は自分でハンドラークラスを作成します。そしてXML文書とこのハンドラークラスを指定して解析を実行します。XMLの個々の開始タグや終了タグ、あるいはデータ毎にハンドラークラスの規定のメソッドが呼び出されます。そしてハンドラークラス内でデータ保持クラスを生成するという仕組みです。

 先の事例の際には両方を比べてみましたが、その時はSAXの方が使いやすかったのでこちらを採用しました。

 その事例を元に説明するので、ここではXMLの利用方法してSAXについて説明します。

 次ページ以降でSAXの概要と使用方法について説明します。






このページの先頭  JAVA編先頭1  JAVA編先頭2  サーバーJava入門先頭

Copyright © 2011 yok. All Rights Reserved.