この章では、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 Version 3.0』(「ebXML RS」) は、ebXML レジストリのサービスとプロトコルを規定しています。
『ebXML Registry Information Model Version 3.0』(「ebXML RIM」) は、ebXML レジストリ内に格納できるメタデータとコンテンツの種類を規定しています。
Service Registry は、SourceForge.net で開発されたオープンソースのレジストリプロジェクトに基づいています。SourceForge の Web サイトには、概要などの ebXML レジストリに関する追加情報を含む Wiki があります。
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 の機能を紹介するたくさんのサンプルクライアントプログラムを掲載しています。レジストリの開発者向けバンドルをインストールした場合、これらのサンプルを含む圧縮ファイルは、ServiceRegistry-base /samples.zip ファイルにあります。
この圧縮ファイルを、ファイルシステム上の適切な場所にコピーします。ファイルの解凍すると、INSTALL>/registry/samples ディレクトリにサンプルのソースコードが格納されています。ここで、INSTALL はサンプルを解凍したディレクトリです。
サンプルごとまたはサンプルグループごとに build.xml ファイルが 1 つずつ用意されています。これらのファイルを使えば、Ant ツール経由で各サンプルをコンパイルおよび実行できます。各 build.xml ファイルには、1 つの compile ターゲットと、1 つまたは複数のサンプルを実行する 1 つ以上のターゲットが含まれています。実行用ターゲットの中には、コマンド行引数を取るものもあります。
Service Registry の開発者向けバンドルがインストールされているシステムでは、ant コマンドは次のディレクトリにあります。
Solaris OS の場合: /usr/sfw/bin
Linux および HP-UX システムの場合: /opt/sun/share/bin
このマニュアルでは、このディレクトリを Ant-base と呼びます。A
ant コマンドを使用するには、JAVA_HOME 環境変数を設定する必要があります。通常は、この変数を次の値に設定します。
/usr/jdk/entsys-j2se
サンプルを実行する前に、INSTALL/registry-samples/common ディレクトリにある build.properties ファイルを編集する必要があります。このファイルは、サンプルを実行する Ant ターゲットで使用されます。
ほかのプロパティーファイル、JAXRExamples.properties は、サンプル自身が使用するリソースバンドルです。このファイルには、いつでも変更できる文字列が含まれています。サンプルを実行する Ant ターゲットは、常にこのファイルの最新版を使用します。
さらに、 INSTALL/registry-samples/common ディレクトリにある targets.xml ファイルは、サンプルをコンパイルおよび実行するためのクラスパスを定義します。また、各サンプルのコンパイル時に作成される build ディレクトリを削除する clean ターゲットも含まれています。このファイルを編集する必要はありません。
追加の JAXR サンプルについては、SourceForge プロジェクトの Web サイトにある Junit tests のフォームを参照してください。これらのサンプルをオンラインで参照するか、またはダウンロードの指示に従ってください。
プロパティー registry.home を、Service Registry のインストールディレクトリに設定します。
Solaris OS の場合: /opt/SUNWsrvc-registry
Linux および HP-UX システムの場合: /opt/sun/srvc-registry
share.dir プロパティーを、Java ES の共有コンポーネントが格納されているディレクトリに設定します。
Solaris OS の場合: /usr/share
Linux および HP-UX システムの場合: /opt/sun/share
ファイアウォールの内側にいる場合、プロパティー proxyHost を、インターネットへのアクセス時に経由するシステムの名前に設定します。
適切な値がわからない場合は、それらの情報を持つシステム管理者などに問い合わせてください。proxyPort の値は、一般的な値である 8080 に設定されていますが、必要があれば変更します。
プロパティー query.url と publish.url を編集して Service Registry の URL を指定します。
このファイルでは、ホストとポートについてのデフォルト設定は localhost:6480 です。Service Registry がリモートサーバー上またはデフォルト以外のポートにインストールされている場合は、この設定を別のホストまたはポートに変更してください。
alias プロパティーおよび password プロパティーを編集し、Service Registry への発行に必要な値を指定します。これらの編集は、Web コンソールのユーザー登録ウィザードを使用した後で行なってください。詳細については、「Service Registry へのアクセス」を参照してください。