本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

XMLBeanを使ってApache GeronimoにSOAアプリをデプロイする

SOA開発を単純化し、時間を節約するための実地デモ

Kunal Mittal (kunal@kunalmittal.com), Director, Domestic TV IT, Sony Pictures Entertainment
Kunal MittalはJava技術やJ2EE、Webサービス技術などを専門とするコンサルタントであり、これらの話題に関する何冊かの本を共同執筆しています。彼はソニー・ピクチャーズ・エンターテインメントのDomestic TV ITグループのディレクターとして、部門のアプリケーションに関する技術的なアーキテクチャーや管理に責任を持っています。詳しくは彼のWebサイトをご覧ください。

概要: 皆さんはXMLBeanに興味があるでしょうか。この、高度で使いやすいXML-Javaバインディング技術を利用すると、Java™オブジェクトやJavaBeanにアクセスする場合と同じようにXMLファイルにアクセスすることができます。この記事では、XMLBean技術について、特にApache Geronimoで使う方法について学びます。また、XMLBeanによってSOA(service-oriented architecture)開発が単純化、合理化できることも学びます。

日付:  2006年 5月 09日
レベル:  中級 この記事の原文:  英語
アクティビティー: 1686 ビュー
お気軽にご意見・ご感想をお寄せください: 


XMLBean技術を利用すると、JavaBeanを扱う場合と同じようにXML構造を扱うことができます。またXMLBeanのようなツールを使うと、サービスの開発やテストに必要な時間を短縮でき、SOA開発を単純化できるため、迅速にサービスを実現できるようになります。

この記事では、XMLBeanを書くための開発コンテナーとして、Apache Geronimoを使用します(ただし、実際には任意のサーバーを使用することができます)。この記事を読む前提として、これまでXMLを扱ったことがあり、XMLスキーマやXQuery、XPathなどの概念に慣れている必要があります。ただし、エキスパートである必要はありません。XMLBeanは、そうした技術の詳細を見えなくしてくれるのです。

XMLBeanとは何か

XMLBeanは、BEAがWebLogic Workshop製品の一部として導入したものです。2003年の9月、BEAは、Page FlowやXMLBean、その他の技術をオープンソース・コミュニティーに寄贈しました。その結果、Apache BeehiveとApache XMLBeanという、2つのプロジェクトが開始されました。

XMLBeanはOR(object-relational)マッパーと考えることができます(ただし相手はリレーショナル・データベースではなく、XMLファイルです)。XMLBeanを使用すると、JavaオブジェクトやJavaBeanにアクセスする場合と同じようにXMLファイルにアクセスすることができます。つまりXMLBeanは、XMLとJavaのバインディング・ツールなのです。

同じようなXML-Javaバインディングを行う他の技術として、よく知られたものに、CastorとJAXB(Java Architecture for XML Binding)があります。Castorは興味深い技術です。CastorはXMLとJavaのデータ・バインディングの他にも、通常のORマッピング・ツールのようにJavaとSQLのバインディングも行うことができるのです。またCastorは、ランタイム・イントロスペクション(introspection)機能もサポートしており、XMLの要素や属性を、クラスやJavaクラスのフィールドと一致比較することができます。またJAXBはSunの技術であり、幾つかの基本的な機能を持っています。

皆さんは恐らく、これまでORツールを評価する際の基準として、そのツールがオブジェクトをXMLで表現できるかどうかなど、考えもしなかったでしょう。今日ではSOAが前面に出てきたため、そうした機能の有無はツールを評価する上で重要な基準となりました。XMLとJavaのバインディング技術としてXMLBeanは最新ですが、恐らく最も進んだ技術です。また、これまでの経験から、XMLBeanは最も使いやすく、しかも最高の機能とパフォーマンスを誇ることが分かっています。(XMLとJavaのバインディング技術相互の詳細な比較は、この記事の範囲外です。)

図1は、XMLBeanが何をするものかを示しています。XMLファイルは、常に背後でbean表現と同期されています。何らかのXMLスキーマに準拠するファイルであれば、JavaBeanの場合と同じように、ゲッターとセッターを使って処理することができます。XML文書は『ファーストクラス・データ・オブジェクト』として扱われ(つまり、つまり制約なしに使うことができます)、JavaBean風の要領でアクセスされます。



図1. XMLとJavaのバインディング
XMLとJavaのバインディング

ここで一例を挙げましょう。XMLスキーマと、それに対応して、ある本を表現するXMLファイルがあると考えてください。このファイルにはAuthorという要素が含まれ、bookと1対多の関係を持っています。この関係は珍しいものではありません。1冊の本に複数の著者がいることは、実際にもよくあるものです。リスト1はこれを示しています。


リスト1. bookオブジェクトに対するXMLファイル
                
        <mybook>
            <title>Pro Apache Beehive</title>
            <authors>
                <author>Kunal Mittal</author>
                <author>Srinivas Kanchanvally</author>
            </authors>
            <isbn>1590595157</isbn>
         </mybook>
         

このファイルをXMLBeanを使って処理する場合、このファイルに対応するJavaクラスは、この関係を維持します。リスト2は、このXMLファイルから得られるXMLBeanを処理するための疑似Javaコードを示しています。


リスト2. XMLBeanを処理するための疑似Javaコード
                
       MyBook doc = MyBook.Factory.newInstance(); 
        Book book = doc.addNewBook();
        book.setTitle("Pro Apache Beehive"); 
        book.setIsbn("1590595157"); 
        String[] authors = new String[2]; 
        authors[0] = new String("Kunal Mittal"); 
        authors[1] = new String("Srinivas Kanchanavally"); 
        book.setAuthors(authors); 
        

XMLBeanとSOA開発

XMLBeanとSOAベースの開発との関係は、容易に推測することができます。大部分のSOA技術にとって(そのSOA技術がWebサービスを使うか否かに関わらず)、XMLは心臓部分です。SOAとWebサービスが等価であると考えるにしても(少なくとも今日では、言うまでもなく等価です)、恐らく皆さんはSOAプロジェクトに従事した開発者として、XMLを使って何らかの作業を行ったことがあるでしょう。皆さんは実際の経験として、XMLパーサーを使ってXMLコンテンツを操作した後、より扱いやすいように手動でXMLファイルをオブジェクト構造に変換したことがあるはずです。また、XMLを構文解析し、そうしたファイルの中で特定なデータを探したかも知れません。あるいは、1つのXML構造を別のXML構造に変換したことがあるかも知れません。XMLBeanは、SOAの世界の、この問題を解決します。つまり、皆さんがWebサービスや他のSOAサービスを書くことに集中できるように、面倒な大仕事を行ってくれるのです。

SOAあるいはWebサービスに関して作業する場合には、アプリケーション・サーバーを書いたりXMLパーサーを書いたりはしません。通常は、ベンダーが構築した何か、あるいはオープンソースとして提供されているものを使います(それらは広く採用され、テストされ、また独自のライフサイクルに従っています)。ではなぜ、XMLをJavaオブジェクトに変換するコードを書き、管理する必要があるのでしょう。XMLBeanを使用することによって、サービスの開発やテストのための時間を削減でき、サービスの実現が、より迅速になるのです。



Apache GeronimoでXMLBeanを扱う

先ほど触れた通り、この記事で取り上げる例では、開発コンテナーとしてApache Geronimoを使っています。このセクションでは、単純なXMLBeanを書き、それをGeronimoにデプロイします。

最初に、XMLスキーマが必要です。そのためには、ある1つのXMLスキーマから始めるか、あるいはXMLスキーマを生成します。これは、幾つかのXMLツール(XMLSpyや<oXygen/> XMLなど)を使えば簡単です。あるいは、XMLBeanスキーマの生成サイト(この記事の最後にある参考文献のセクションにリンクがあります)で、オンラインでXMLスキーマを生成することもできます。

サンプルのXMLファイルをリスト3に示します。(この記事ではサンプル・コードは示しません。これまで皆さんが作業したXMLファイルを使ってスキーマを生成し、そこからXMLBeanを生成してください。そうすれば、この記事を読みながらXMLBeanの実際を理解できると思います。)


リスト3. bookに対するXMLの例
                
       <?xml version="1.0" encoding="UTF-8"?> 
        <bookDetail xmlns="http://beehive.apress.com/bookstore/vo"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://beehive.apress.com/bookstore/vo 
        file:/C:/ /code/chapter8/bookdetails.xsd"> 
          <book_Id>1</book_Id>
          <title>Pro Apache Beehive</title>
          <book_type>Book</book_type> 
          <author>Kunal Mittal, Srinivas Kanchanvally</author>
          <publication>Apress</publication>
          <publication_Date>2005-08-31</publication_Date>
          <catalogNo>123</catalogNo>
          <isbn>1590595157</isbn>
          <price>49.99</price> 
          <comments>The 1st book on Apache Beehive</comments> 
          <pages>300</pages>
          <available>false</available> 
        </bookDetail> 

また、XMLBeanのWebサイトでXMLBeanを直接生成することもできます(何かをダウンロードしたり、ユーティリティーを実行したりする必要はありません)。そのためにはXMLBeans Schema Validatorサイト(参考文献にリンクがあります)に行き、そこにあるリンクをたどります。図2は、そのスクリーン・ショットです。あるいは、XMLBeanのディストリビューションをダウンロードすることもできます。このディストリビューションにはコマンドライン・ユーティリティーとAntタスクが含まれており、XMLBeanを生成してくれます。


図2. XMLスキーマの妥当性検証サイト
XMLスキーマの妥当性検証サイト

XMLBeanを生成すると、必要な全コードを含んだJAR(Java Archive)ファイルが得られます。ただし、やはりApacheのXMLBeans Webサイト(参考文献にリンクがあります)からXMLBean実行可能JARをダウンロードし、作成したXMLBeanを扱うためにコンテナー(この場合はApache Geronimo)をイネーブルにする必要があります。

Apache Geronimoをまだダウンロードしてインストールしていなかったら、ダウンロードしてインストールします(参考文献にダウンロードへのリンクがあります)。ここでは仮に、Apache Geronimoをc:\java\geronimo-1.0にインストールし、XMLBeanをc:\java\xmlbeans-2.1.0にインストールしたとします。この記事のこれから先では、これらのディレクトリーを、GERONIMO_HOMEと XMLBEANS_HOMEと呼ぶことにします。別のディレクトリー構造を使用する場合には、これらのディレクトリー名も適切に修正する必要があります。

訳註:円マーク(¥)は原文ではバックスラッシュです。

XMLBeanを使うためにアプリケーション・サーバーは必要ありませんが、(Geronimoを含めて)任意のアプリケーション・サーバーにデプロイされたJ2EE(Java 2 Platform, Enterprise Edition)アプリケーションでXMLBeanを使うことができます。この記事では、上位レベルの概念を説明し、使い方を示すための擬似コードを示すことにします。しかし最大の効果を上げるためには、実際のファイルを使いながら読んだ方が効果的です。

J2EEアプリケーションを設定する

ここで、本に関する情報を、Webサービスを通して図書館あるいはAmazon.comと交換するための、単純なアプリケーションを構築することを考えてみてください。古典的なシナリオとしては、AmazonのWebサービスを利用します。皆さんは、この記事で説明したシナリオの1つを試みるか、あるいは先ほど説明したステップで作成したXMLBeanを使うことができます。

最初のステップは、XMLBEANS_HOME\libディレクトリーの中の .jarファイルを、EAR(Enterprise Archive)にコピーすることです。どこで、どのようにXMLBeanを使用するかによって、こうしたファイルをAPP-INF/libあるいはWEB-INF/libに置く必要があるかも知れません。あるいはさらに、こうしたファイルをGERONIMO_HOME\libディレクトリーに置き、このサーバー・インスタンス上にデプロイされた任意のJ2EEアプリケーションから利用できるようにすることもできます。

次に、J2EEアプリケーションをApache Geronimoにデプロイします。デプロイの方法については、developerWorksの記事、「Apache GeronimoにJ2EEアプリケーションをデプロイする」(developerWorks, 2006年1月)に説明されています。これで、XMLBeanの機能を動作させる準備が整いました。

XMLBeanを設定する

XMLBean用に(XMLBeanディストリビューションの一部として提供されているユーティリティー、あるいはXMLBeansのWebサイトを使って)ビルドした .jarファイルを、APP-INF/libあるいはWEB-INF/libに置きます。これで、あとはXMLBeanに対するコードを書くだけになりました。この例では、XMLBeanを処理するためのJavaコードを含む、単純なJSP(JavaServer Page)を書きます。

XMLBeanを処理するためコードを書く

リスト2のコード使うと、新しいXML文書を作成することができます。このコードは、基本的なJavaBean型のゲッターとセッターを使ってXMLBeanを使用するXML文書を作成します。リスト4は、XMLBeanの中にXMLファイルをインポートするためのコードを含んでいます。


リスト4. XMLBeanの中にXMLファイルを読み込む
                
       BookDocument book = null; try { book =
        BookDocument.Factory.parse(pathtobookxmlfile); } catch (XmlException e) {
        e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 

このタイプのコードをJSPの中で試し、そのJSPをGeronimoにデプロイして結果を見ます。

developerWorksの記事「Apache GeronimoにWebサービスをデプロイする」(developerWorks, 2005年4月)は、AmazonのWebサービスを利用する方法と、そのサービスをApache Geronimoの中で使用する方法について説明しています。皆さんの練習として、これをXMLBeanを使うように修正してみてください。



まとめ

この短い記事では、XMLBeanと、その扱い方の基本の実際を学びました。また、Apache GeronimoでXMLBeanを扱うための基本的なステップについても学びました。これらの方法は、IBM® WebSphere® Application ServerやApache Tomcat、JBossあるいはBEA WebLogicなどの中でXMLBeanを扱う場合でもまったく同じです。この記事で取り上げた項目は、これらの製品にもそのまま適用することができます。

またこの記事では、SOAプロジェクトを進めるための時間がXMLBeanを使うことによって節約できることも示しました。XMLBeanは、機能や柔軟性、そして最も重要な、パフォーマンスの面からも、最も進んだJava-XMLバインディング技術と言うことができます。



参考文献

学ぶために

製品や技術を入手するために

  • Apache Geronimoをダウンロードしてください。

  • Apache XMLBeansをダウンロードしてください。

  • XMLBeanスキーマ生成サイトでXMLスキーマを作成してください。

  • XMLBeans Schema ValidatorサイトでXMLBeanを生成してください。

  • 皆さんの次期オープンソース・プロジェクトをIBM trial softwareを使って革新してください。ダウンロードで、あるいはDVDで入手することができます。

  • IBM WebSphere® Application Server Community Edition V1.0の無料コピーをダウンロードしてください。Apache Geronimoオープンソース技術の上に構築された軽量のJ2EEアプリケーション・サーバーとして、皆さんの開発やデプロイ作業の加速に役立つはずです。

議論するために

著者について

Kunal Mittal

Kunal MittalはJava技術やJ2EE、Webサービス技術などを専門とするコンサルタントであり、これらの話題に関する何冊かの本を共同執筆しています。彼はソニー・ピクチャーズ・エンターテインメントのDomestic TV ITグループのディレクターとして、部門のアプリケーションに関する技術的なアーキテクチャーや管理に責任を持っています。詳しくは彼のWebサイトをご覧ください。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source, Java technology, SOA and Web services, XML
ArticleID=236427
ArticleTitle=XMLBeanを使ってApache GeronimoにSOAアプリをデプロイする
publish-date=05092006
author1-email=kunal@kunalmittal.com
author1-email-cc=dwxed@us.ibm.com

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。