この章では、Service Registry に対してクエリーや更新を実行できる JAXR クライアントを実装するための最初の手順について説明します。JAXR クライアントとは、JAXR API を使用してレジストリにアクセスするクライアントプログラムです。ここでは、次の項目について説明します。
Service Registry を起動するには、Service Registry がインストールされているコンテナである Sun Java System Application Server を起動します。
Service Registry がまだ稼働していない場合は、Service Registry を起動します。手順については、『Service Registry 3 2005Q4 管理ガイド』の「レジストリ用 Application Server ドメインを停止および再起動する方法」を参照してください。
JAXR クライアントのすべてのユーザーは、Service Registry で、アクセス制御ポリシーで制限されていないオブジェクトに対してクエリーを実行できます。ただし、次のアクションを実行する場合、ユーザーは Service Registry からアクセス権を取得する必要があります。
Service Registry へのデータの追加
レジストリデータの更新
制限されているオブジェクトについてクエリーの実行
Service Registry では、ユーザーアクセスにクライアント証明書認証が使用されます。
Service Registry にデータを送信できるユーザーを作成するには、Web コンソールのユーザー登録ウィザードを使用します。Web コンソールは Service Registry ソフトウェアの一部です。ユーザーに Service Registry の使用を承認する証明書に加えて、ユーザー名とパスワードをこのウィザードで取得する方法については、『Service Registry 3 2005Q4 ユーザーズガイド』の「ユーザーアカウントの作成」を参照してください。認証局から取得した既存の証明書を使用することもできます。
Service Registry にデータを発行する前に、ダウンロードした .p12 ファイルから JKS キーストアファイルに証明書を移動する必要があります。キーストアファイルの場所は、必ずホームディレクトリ内の次の位置にしてください。$HOME/soar/3.0/jaxr-ebxml/security/keystore.jks 。サンプルプログラムには、このタスクを実行する asant ターゲットが含まれています。詳細については、「証明書のキーストアを作成するには」を参照してください。
ユーザーアカウントとキーストアの作成後、JAXRExamples.properties ファイルを編集します。詳細については、「JAXRExamples.properties ファイルのセキュリティー設定を編集する」を参照してください。
証明書の JKS キーストアを作成するには、asant ターゲットの move-keystore を使用します。これは、<INSTALL>/registry/samples/common/targets.xml ファイルで定義されています。このターゲットファイルは、サンプルディレクトリ内のすべての build.xml ファイルで使用されます。
move-keystore ターゲットでは、<INSTALL>/registry/samples/common/build.properties ファイルで定義されている keystoreFile という名前のプロパティーが使用されます。このプロパティーの定義を変更しないでください。move-keystore ターゲットは、ebxmlrr のキーストアパスワードも指定します。この値は、JAXRExamples.properties ファイルの security.storepass プロパティーで使用されます。
common 以外のサンプルディレクトリのいずれかに移動します。
たとえば、次のコマンドを使用したとします。
cd registry/samples/query-id |
次のコマンドを実行します。すべて 1 行に入力してください。
asant move-keystore -Dp12path=path_of_p12_file -Dalias=your_user_name -Dpassword=your_password |
次のようなコマンドを使用します。
asant move-keystore -Dp12path=/home/myname/testuser.p12 -Dalias=testuser -Dpassword=testuser |
このターゲットの構文ヒントを表示するには、コマンド asant -projecthelp を使用します。
<INSTALL>/registry/samples/common/JAXRExamples.properties ファイルをテキストエディタで開きます。
次の行を見つけます。
security.keystorePath=<home_dir>/soar/3.0/jaxr-ebxml/security/keystore.jks security.storepass=ebxmlrr security.alias= security.keypass= |
security.keystorePath プロパティーを指定するには、<home_dir> をホームディレクトリの絶対パス ( /home/myname など) で置き換えます。
security.alias プロパティーの値には、ユーザー登録ウィザードで入力したユーザー名を指定します。
security.keypass プロパティーの値には、ユーザー登録ウィザードで入力したパスワードを指定します。
ファイルを保存して、閉じます。
JAXR クライアントで完了しなければならない最初のタスクは、レジストリへの接続の確立です。接続の確立には、次のタスクが必要です。
クライアントは、接続ファクトリから接続を作成します。ここでは、接続ファクトリを取得する 2 つの方法について説明します。
スタンドアロンのクライアントプログラムで使用するために ConnectionFactory インスタンスを取得
配備された JavaTM 2 Platform, Enterprise Edition (J2EE) アプリケーションで使用するために接続ファクトリを検索
スタンドアロンのクライアントプログラムで JAXR を使用するには、抽象クラス ConnectionFactory のインスタンスを取得する必要があります。そのためには、JAXR プロバイダの JAXRUtility クラスの getConnectionFactory メソッドを呼び出します。
import org.freebxml.omar.client.xml.registry.util.JAXRUtility; ... ConnectionFactory factory = JAXRUtility.getConnectionFactory();
J2EE アプリケーションで使用するための 1 つ以上の事前設定済み接続ファクトリが、JAXR プロバイダによって提供される場合があります。これらのファクトリを取得するために、クライアントは JNDI (Java Naming and Directory Interface) API を使用してファクトリを検索します。
配備された J2EE アプリケーションで JAXR を使用するには、JAXR リソースアダプタ (RA) によって提供される接続ファクトリを使用します。そのような接続ファクトリにアクセスするには、JNDI 名が eis/MYSOAR であるコネクタリソースを使用する必要があります。このリソースは Service Registry の設定プロセスで作成されます。J2EE コンポーネントでこの接続ファクトリを検索するには、次のようなコードを使用します。
import javax.xml.registry.*; import javax.naming.*; ... Context context = new InitialContext(); ConnectionFactory connFactory = (ConnectionFactory) context.lookup("java:comp/env/eis/MYSOAR");
接続を作成するために、クライアントはまず、アクセスされる 1 つ以上のレジストリの URL を指定する一連のプロパティーを作成します。Service Registry がローカルシステムに配備されている場合、次のコードは Service Registry のクエリーサービスと発行サービスの URL を指定します。この文字列中には改行を入れないでください。
Properties props = new Properties(); props.setProperty("javax.xml.registry.queryManagerURL", "http://localhost:6060/soar/registry/soap"); props.setProperty("javax.xml.registry.lifeCycleManagerURL", "http://localhost:6060/soar/registry/soap");
次に、クライアントは、「接続ファクトリの作成または検索」で説明されているように接続ファクトリを取得し、そのプロパティーを設定して、接続を作成します。次のコードは、これらのタスクを実行します。
ConnectionFactory factory = JAXRUtility.getConnectionFactory(); factory.setProperties(props); Connection connection = factory.createConnection();
サンプルプログラムの makeConnection メソッドは、JAXR 接続の作成手順を示しています。
「接続の作成」では、接続に対して設定可能な 2 つのプロパティーを表示して説明しています。これらのプロパティーは JAXR 仕様で定義されています。
表 2–1 標準 JAXR 接続プロパティー
プロパティー名と説明 |
データタイプ |
デフォルト値 |
---|---|---|
javax.xml.registry.queryManagerURL ターゲットレジストリプロバイダ内のクエリーマネージャーサービスの URL を指定します。 |
文字列 |
なし |
javax.xml.registry.lifeCycleManagerURL ターゲットレジストリプロバイダ内のライフサイクルマネージャーサービスの URL を指定します (レジストリ更新用)。 |
文字列 |
queryManagerURL に指定された値と同じ |
接続の作成後、クライアントはその接続を使用して RegistryService オブジェクトを取得してから、自らが使用する 1 つまたは複数のインタフェースを取得します。
RegistryService rs = connection.getRegistryService(); DeclarativeQueryManager bqm = rs.getDeclarativeQueryManager(); LifeCycleManager blcm = rs.getLifeCycleManager();
通常、クライアントは RegistryService オブジェクトから 2 つのオブジェクトを取得します。1 つはクエリーマネージャー、もう 1 つはライフサイクルマネージャーです。クエリーマネージャーは DeclarativeQueryManager オブジェクトまたは BusinessQueryManager オブジェクトです。ライフサイクルマネージャーは LifeCycleManager オブジェクトまたは BusinessLifeCycleManager オブジェクトです。クライアントが単純なクエリーのみに Service Registry を使用しているのであれば、クライアントはクエリーマネージャーだけを取得すればよい場合があります。