この章では、JavaTM API for XML Registries (JAXR) の概要について簡単に説明します。次のトピックについて説明します。
XML「レジストリ」は、Web サービスを構築、配備、および検出するための基盤です。これは中立的なサードパーティーであり、疎結合された動的な B2B (Business-to-Business) 対話を支援します。レジストリは共有リソースとして複数の組織で使用でき、通常は Web ベースのサービスとして提供されます。
現在、さまざまな XML レジストリ仕様が存在しています。これらの仕様には次のものがあります。
ebXML Registry and Repository 標準。この標準のスポンサは、OASIS (Organization for the Advancement of Structured Information Standards: 構造化情報標準促進協会) と U.N./CEFACT (United Nations Centre for the Facilitation of Procedures and Practices in Administration, Commerce and Transport: 行政、商業、運輸に関する実務及び手続簡易化センター。国連機関) です。ebXML は Electronic Business using eXtensible Markup Language (XML による電子商取引) の略です。
UDDI (Universal Description, Discovery, and Integration) プロトコル。このプロトコルは、あるベンダーコンソーシアムによって開発されました。
「レジストリプロバイダ」とは、XML レジストリの特定の仕様に準拠したレジストリ実装のことです。
UDDI がビジネスと提供するサービスに関する情報を格納するのに対し、ebXML レジストリはより広い範囲をカバーします。それは、レジストリであると同時に「リポジトリ」でもあります。リポジトリには、任意のコンテンツとそのコンテンツに関する情報が格納されます。つまり、リポジトリにはデータとメタデータが格納されます。ebXML レジストリ標準は、相互運用可能な Web サービス用の ECM (Enterprise Content Management) API を規定しています。
Web における ebXML Registry and Repository は、エンタープライズアプリケーションにおけるリレーショナルデータベースに相当します。これは、Web サービスや Web アプリケーションがコンテンツとメタデータを格納および共有する手段を提供します。
ebXML レジストリは、「レジストリ連携」(関連するレジストリから成るグループ) に含めることができます。たとえば、欧州のある国の厚生省があるレジストリを運営し、さらにそのレジストリを、ほかの欧州諸国の厚生省のレジストリが含まれる連携に含める、といったことが可能です。
Service Registry は、ebXML Registry and Repository 仕様のバージョン 3.0 を実装したものです。この仕様は次の 2 つに分かれています。
『ebXML Registry Services and Protocols Specification』(「ebXML RS」) は、ebXML レジストリのサービスとプロトコルを規定しています。
『ebXML Registry Information Model Specification』(「ebXML RIM」) は、ebXML レジストリ内に格納できるメタデータとコンテンツの種類を規定しています。
これらの仕様の最新の公開版を入手するには、OASIS の Web サイト にアクセスし、ebXML RIM V3.0 と ebXML RS V3.0 へのリンクをクリックします。
JAXR を使用すれば、Java ソフトウェアプログラマは、1 つの簡便な抽象 API を通じてさまざまな XML レジストリにアクセスできます。JAXR の統一化された情報モデルは、XML レジストリ内のコンテンツとメタデータを記述します。
JAXR を使用すれば、開発者は、さまざまなターゲットレジストリに移植可能なレジストリクライアントプログラムを記述できます。さらに、JAXR は、背後のレジストリに備わる機能を超えた、付加価値の高い機能をも提供します。
JAXR 仕様の現行バージョンには、JAXR 情報モデルと ebXML レジストリ仕様間の詳細なバインディング情報が含まれています。JAXR 仕様の最新バージョンは、http://java.sun.com/xml/downloads/jaxr.html から入手できます。JAXR の API ドキュメントは、Java 2 Platform, Enterprise Edition (J2EE プラットフォーム) の API ドキュメント に含まれています。
Service Registry には、レベル 1 機能プロバイダを実装した JAXR プロバイダが含まれており、ebXML レジストリへのフルアクセスが可能となっています。ebXML 仕様と JAXR 仕様間の整合性は完全ではありません。これは、ebXML 仕様のほうが JAXR 仕様よりも改良が進んでいるためです。このため、Service Registry の JAXR プロバイダには、ebXML 仕様を実装する、追加の実装固有メソッドがいくつか含まれています。これらの追加メソッドは、JAXR 仕様の次のバージョンに組み込まれる予定です。
JAXR の高レベルのアーキテクチャーは、次の要素から構成されます。
JAXR クライアント: これは、JAXR API を使って JAXR プロバイダ経由でレジストリにアクセスするクライアントプログラムです。
JAXR プロバイダ: これは JAXR API の実装であり、特定のレジストリプロバイダまたは共通の仕様に基づく一連のレジストリプロバイダへのアクセス機能を提供します。このマニュアルでは、JAXR プロバイダの実装方法については説明しません。
JAXR プロバイダが実装する主要パッケージは、次の 2 つです。
javax.xml.registry。このパッケージは、API インタフェース、およびレジストリアクセスインタフェースを定義する クラス群から成ります。
javax.xml.registry.infomodel。このパッケージは、JAXR の情報モデルを定義するインタフェース群から成ります。これらのインタフェースは、レジストリに格納されるオブジェクトのタイプと、それらの関係を定義します。このパッケージの基本インタフェースは RegistryObject です。
javax.xml.registry パッケージのもっとも基本的なインタフェースを次に示します。
Connection。Connection インタフェースは、レジストリプロバイダとのクライアントセッションを表現したものです。クライアントは、レジストリを使用する前に、JAXR プロバイダとの接続を作成する必要があります。
RegistryService。クライアントは、接続から RegistryService オブジェクトを取得します。この RegistryService オブジェクトにより、クライアントは、レジストリへのアクセスに使用するインタフェースを順に取得できます。
同じく javax.xml.registry パッケージ内に含まれるインタフェースのうち、主なものを次に示します。
QueryManager と BusinessQueryManager。クライアントはこれらのインタフェースを使用して、javax.xml.registry.infomodel のインタフェース群に基づいてレジストリ内で情報を検索できます。省略可能なインタフェース DeclarativeQueryManager は、クライアントが SQL 構文を使ってクエリーを実行できるようにします。Service Registry の ebXML プロバイダは、DeclarativeQueryManager を実装しています。
LifeCycleManager と BusinessLifeCycleManager 。クライアントはこれらのインタフェースを使用して、情報の保存 (更新) または削除によってレジストリ内の情報を変更できます。
詳細、およびこれらのインタフェース間の関係を示す図については、javax.xml.registry パッケージの API ドキュメント (http://java.sun.com/j2ee/1.4/docs/api/javax/xml/registry/package-summary.html) を参照してください。
エラーが発生すると、AXR API のメソッドは JAXRException またはそのサブクラスの 1 つをスローします。
JAXR API の多くのメソッドでは、Collection オブジェクトが引数または戻り値として使用されています。Collection オブジェクトを使用すると、いくつかのレジストリオブジェクトに対する操作を一度に実行できます。
図 1–1 は、JAXR のアーキテクチャーを図示したものです。Service Registry の場合、JAXR クライアントは、JAXR API の機能レベル 0 と機能レベル 1 のインタフェースを使って JAXR プロバイダ (ebXML プロバイダ) にアクセスします。すると、JAXR プロバイダは、ebXML レジストリの一種である Service Registry にアクセスします。
このマニュアルには、JAXR の機能を紹介するたくさんのサンプルクライアントプログラムを掲載しています。これらのサンプルを入手するには、次の URL にアクセスしてください。http://www.sun.com/products/soa/registry/#faq/。サンプルを収録した圧縮ファイルは、「リソース」セクションから入手できます。
この圧縮ファイルを、ファイルシステム上の適切な場所にダウンロードします。ファイルの解凍すると、<INSTALL>/registry/samples ディレクトリにサンプルのソースコードが格納されています。ここで、<INSTALL> はサンプルを解凍したディレクトリです。
サンプルごとまたはサンプルグループごとに build.xml ファイルが 1 つずつ用意されています。これらのファイルを使えば、asant ツール経由で各サンプルをコンパイルおよび実行できます。各 build.xml ファイルには、1 つの compile ターゲットと、1 つまたは複数のサンプルを実行する 1 つ以上のターゲットが含まれています。実行用ターゲットの中には、コマンド行引数を取るものもあります。
asant コマンドは Sun Java System Application Server の bin ディレクトリにあります。このディレクトリは通常、SolarisTM オペレーティングシステムでは /opt/SUNWappserver/appserver/bin/、Linux システム上では /opt/sun/appserver/bin になります。
サンプルを実行する前に、<INSTALL>/registry/samples/common ディレクトリにある 2 つのファイルを編集する必要があります。ファイル build.properties は、プログラムを実行する asant ターゲットが使用します。ファイル JAXRExamples.properties は、プログラム自身が使用するリソースバンドルです。
さらに、<INSTALL>/registry/samples/common ディレクトリにある targets.xml ファイルには、サンプルをコンパイルおよび実行するためのクラスパスが定義されています。また、各サンプルのコンパイル時に作成される build ディレクトリを削除する clean ターゲットも含まれています。このファイルを編集する必要はありません。
プロパティー container.home を、Service Registry が配備されているコンテナの場所に設定します。
これは、Sun Java System Application Server Enterprise Edition 8.1 がインストールされている場所です。この場所のデフォルトは、 Solaris システムでは /opt/SUNWappserver、Linux システムでは /opt/sun/appserver です。
プロパティー registry.home を、Service Registry のインストールディレクトリに設定します。
このディレクトリは、Solaris システムでは /opt/SUNWsoar、Linux システムでは /opt/sun/SUNWsoar です。
プロパティー registry.domain.home を、Service Registry のドメインのインストールディレクトリに設定します。
このディレクトリは、Solaris システムでは /var/opt/SUNWsoar/domains/registry、Linux システムでは /var/opt/sun/SUNWsoar/domains/registry です。
ファイアウォールの内側にいる場合、プロパティー proxyHost を、インターネットへのアクセス時に経由するシステムの名前に設定します。
適切な値がわからない場合は、それらの情報を持つシステム管理者などに問い合わせてください。proxyPort の値は、一般的な値である 8080 に設定されていますが、必要があれば変更します。
プロパティー query.url と publish.url を編集して Service Registry の URL を指定します。
このファイルでは、ホストとポートについてのデフォルト設定は localhost:6060 です。Service Registry がリモートサーバー上またはデフォルト以外のポートにインストールされている場合は、この設定を別のホストまたはポートに変更してください。
セキュリティー関連のプロパティーを編集し、Service Registry への発行に必要なプロパティーを指定します。これらの編集は、Web コンソールのユーザー登録ウィザードを使用した後で行なってください。詳細については、「Service Registry へのアクセス」を参照してください。
サンプルを試すときに、ファイルのほかの部分のデータを自由に変更してかまいません。
クライアントサンプルを実行する asant ターゲットは、常にこのファイルの最新版を使用します。