Service Registry 3.1 開発ガイド

第 2 章 JAXR クライアントの設定

この章では、Service Registry に対してクエリーや更新を実行できる JAXR クライアントを実装するための最初の手順について説明します。JAXR クライアントとは、JAXR API を使用してレジストリにアクセスするクライアントプログラムです。

この章では、次のトピックについて説明します。

Service Registry の起動

Service Registry を起動するには、Service Registry がインストールされているコンテナである Sun Java System Application Server を起動します。

Service Registry がまだ稼働していない場合は、Service Registry を起動するか、またはシステム管理者に起動を要求します。手順については、『Service Registry 3.1 管理ガイド』「レジストリ用 Application Server ドメインを停止および再起動する」を参照してください。

Service Registry へのアクセス

JAXR クライアントのすべてのユーザーは、Service Registry で、アクセス制御ポリシーで制限されていないオブジェクトに対してクエリーを実行できます。ただし、次のアクションを実行する場合、ユーザーは Service Registry からアクセス権を取得する必要があります。

Service Registry では、ユーザーアクセスにクライアント証明書認証が使用されます。

Service Registry にデータを送信できるユーザーを作成するには、Web コンソールのユーザー登録ウィザードを使用します。Web コンソールは Service Registry ソフトウェアの一部です。ユーザーに Service Registry の使用を承認する証明書に加えて、ユーザー名とパスワードをこのウィザードで取得する方法については、『Service Registry 3.1 ユーザーズガイド (2006Q4)』「ユーザーアカウントの作成」を参照してください。認証局から取得した既存の証明書を使用することもできます。

Service Registry にデータを発行する前に、ダウンロードした .p12 ファイルから JKS キーストアファイルに証明書を移動する必要があります。キーストアファイルの場所は、必ずホームディレクトリ内の次の位置にしてください。$HOME/soar/3.0/jaxr-ebxml/security/keystore.jksサンプルプログラムには、このタスクを実行する Ant ターゲットが含まれています。詳細については、「証明書のキーストアを作成するには」を参照してください。

ユーザーアカウントとキーストアの作成後、build.properties ファイルを編集します。詳細については、build.properties ファイルのセキュリティー設定を編集するには」を参照してください。

Procedure証明書のキーストアを作成するには

証明書の JKS キーストアを作成するには、Ant ターゲットの move-keystore を使用します。これは、INSTALL /registry-samples/common/targets.xml ファイルで定義されています。このターゲットファイルは、サンプルディレクトリ内のすべての build.xml ファイルで使用されます。


注 –

Admin Tool の keystoreMover コマンドは、この Ant ターゲットと同じ機能を実行します。詳細については、『Service Registry 3.1 管理ガイド』「keystoreMover」を参照してください。


move-keystore ターゲットでは、INSTALL /registry-samples/common/build.properties ファイルで定義されている keystoreFile という名前のプロパティーが使用されます。このプロパティーの定義を変更しないでください。move-keystore ターゲットは、ebxmlrr のキーストアパスワードも指定します。この値は、build.properties ファイルの storepass プロパティーで使用されます。

  1. common 以外のサンプルディレクトリのいずれかに移動します。

    たとえば、次のコマンドを使用したとします。


    cd registry-samples/search-id
    
  2. 次のコマンドを実行します。すべて 1 行に入力してください。


    Ant-base/ant move-keystore -Dp12path=path-of-p12-file -Dalias=your-user-name
    -Dpassword=your-password
    

    次のようなコマンドを使用します。


    Ant-base/ant move-keystore -Dp12path=/home/myname/testuser.p12 -Dalias=testuser
    -Dpassword=testuser
    

    このターゲットの構文ヒントを表示するには、コマンド Ant-base/ant -projecthelp を使用します。

Procedurebuild.properties ファイルのセキュリティー設定を編集するには

  1. テキストエディタで、INSTALL/registry-samples/common/build.properties ファイルを開きます。

  2. 次の行を見つけます。


    alias=
    keypass=
  3. alias プロパティーの値には、ユーザー登録ウィザードで入力したエイリアスを指定します。

  4. keypass プロパティーの値には、ユーザー登録ウィザードで入力したパスワードを指定します。

  5. ファイルを保存して、閉じます。

Service Registry への接続の確立

JAXR クライアントで完了しなければならない最初のタスクは、レジストリへの接続の確立です。接続の確立には、次のタスクが必要です。

接続ファクトリの取得

クライアントは、接続ファクトリから接続を作成します。abstract クラス ConnectionFactory のインスタンスを取得するには、クライアントは JAXR プロバイダの JAXRUtility クラスの getConnectionFactory メソッドを呼び出します。

import org.freebxml.omar.client.xml.registry.util.JAXRUtility;
...
ConnectionFactory factory = JAXRUtility.getConnectionFactory();

接続の作成

接続を作成するために、クライアントはまず、アクセスされる 1 つ以上のレジストリの URL を指定する一連のプロパティーを作成します。Service Registry がローカルシステムに配備されている場合、次のコードは Service Registry のクエリーサービスと発行サービスの URL を指定します。

Properties props = new Properties();
props.setProperty("javax.xml.registry.queryManagerURL",
    "http://localhost:6480/soar/registry/soap");
props.setProperty("javax.xml.registry.lifeCycleManagerURL",
    "http://localhost:6480/soar/registry/soap");

次に、クライアントは、「接続ファクトリの取得」 で説明されているように接続ファクトリを取得し、そのプロパティーを設定して、接続を作成します。次のコードは、これらのタスクを実行します。

ConnectionFactory factory = JAXRUtility.getConnectionFactory();
factory.setProperties(props);
Connection connection = factory.createConnection();

サンプルプログラムの makeConnection メソッドは、JAXR 接続の作成手順を示しています。

表 2–1では、接続に対して設定可能な 2 つのプロパティーを表示して説明しています。これらのプロパティーは JAXR 仕様で定義されています。

表 2–1 標準 JAXR 接続プロパティー

プロパティー名と説明 

データタイプ 

デフォルト値 

javax.xml.registry.queryManagerURL

ターゲットレジストリプロバイダ内のクエリーマネージャーサービスの URL を指定します。 

文字列 

なし 

javax.xml.registry.lifeCycleManagerURL

ターゲットレジストリプロバイダ内のライフサイクルマネージャーサービスの URL を指定します (レジストリ更新用)。 

文字列 

queryManagerURL に指定された値と同じ

RegistryService オブジェクトの取得および使用

接続の作成後、クライアントはその接続を使用して RegistryService オブジェクトを取得してから、自らが使用する 1 つまたは複数のインタフェースを取得します。

RegistryService rs = connection.getRegistryService();
DeclarativeQueryManager bqm = rs.getDeclarativeQueryManager();
BusinessLifeCycleManager blcm = rs.getBusinessLifeCycleManager();

通常、クライアントは RegistryService オブジェクトから 2 つのオブジェクトを取得します。1 つはクエリーマネージャー、もう 1 つはライフサイクルマネージャーです。クエリーマネージャーは DeclarativeQueryManager オブジェクトまたは BusinessQueryManager オブジェクトです。どちらのオブジェクトも、基本インタフェース QueryManager を実装します。ライフサイクルマネージャーは、BusinessLifeCycleManager オブジェクトです。このオブジェクトは、基本インタフェース LifeCycleManager を実装します。クライアントが単純なクエリーのみに Service Registry を使用しているのであれば、クライアントはクエリーマネージャーだけを取得すればよい場合があります。

プログラムで Service Registry JAXR プロバイダの実装固有の機能が使用されている場合は、クエリーマネージャーまたはライフサイクルマネージャーの実装固有のバージョンをそれぞれ使用する必要があります。BusinessQueryManagerImpl DeclarativeQueryManagerImpl、または BusinessLifeCycleManagerImpl