WebSphere Application Server Network Deployment, Version 6.1   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows, Windows Vista

             目次と検索結果のパーソナライズ化

UDDI 用の JAXR - 概要と詳細

サンプル・プログラムで、Java API for XML Registries (JAXR) の開始方法について説明します。このトピックでは、クラス・ライブラリー、認証およびセキュリティー、内部分類法、およびロギングとメッセージについても取り上げます。

簡単な例

以下のサンプル・プログラムは、 ConnectionFactory インスタンスを取得し、レジストリーへの接続を作成して、 組織をレジストリーに保管する方法を示したものです。

import java.net.PasswordAuthentication;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;

import javax.xml.registry.BulkResponse;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.JAXRException;
import javax.xml.registry.RegistryService;
import javax.xml.registry.infomodel.Key;
import javax.xml.registry.infomodel.Organization;

public class JAXRSample
{
    public static void main(String[] args) throws JAXRException
    {
        //Tell the ConnectionFactory to use the JAXR Provider for UDDI
        System.setProperty("javax.xml.registry.ConnectionFactoryClass", "com.ibm.xml.registry.uddi.ConnectionFactoryImpl");
ConnectionFactory connectionFactory = ConnectionFactory.newInstance();

        //Set the URLs for the UDDI inquiry and publish APIs.
        //These must be the URLs of the UDDI version 2 APIs. 
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", "http://localhost:9080/uddisoap/inquiryapi");
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", "http://localhost:9080/uddisoap/publishapi");
        connectionFactory.setProperties(props);

        //Create a Connection to the UDDI registry accessible at the above URLs.
        Connection connection = connectionFactory.createConnection();

        //Set the user ID and password used to access the UDDI registry.
        PasswordAuthentication pa = new PasswordAuthentication("Publisher1", new char[] { 'p', 'a', 's', 's', 'w', 'o', 'r', 'd' });
Set credentials = new HashSet();
        credentials.add(pa);
        connection.setCredentials(credentials);

        //Get the javax.xml.registry.BusinessLifeCycleManager interface, which contains
        //methods corresponding to UDDI publish API calls.
        RegistryService registryService = connection.getRegistryService();
        BusinessLifeCycleManager lifeCycleManager = registryService.getBusinessLifeCycleManager();

        //Create an Organization (UDDI businessEntity) with name "Organization 1".
        Organization org = lifeCycleManager.createOrganization("Organization 1");

        //Add the Organization to a Collection, ready to be saved in the UDDI registry. 
        Collection orgs = new ArrayList();
        orgs.add(org);

        //Save the Organization in the UDDI registry.
        BulkResponse bulkResponse = lifeCycleManager.saveOrganizations(orgs);

        //Obtain the Organization's Key (the UDDI businessEntity's businessKey) from the response.
        if (bulkResponse.getExceptions() == null)
        {
            //1 Organization was saved, so 1 key will be returned in the response collection
            Collection responses = bulkResponse.getCollection();
            Key organizationKey = (Key)responses.iterator().next();
            System.out.println("¥nOrganization Key = " + organizationKey.getId());
        }
    }
}

クラスパス

JAXR Provider for UDDI のクラス・ライブラリーは、com.ibm.uddi_1.0.0.jar ファイル (app_server_root/plugins ディレクトリーにあります) に 含まれています。WebSphere Application Server の下で実行されている J2EE アプリケーションから JAXR API を使用する場合、必要なクラスはすべて、 自動的にクラスパス上に置かれます。この環境の外側から JAXR API を使用する場合は、 以下の JAR ファイルを Java クラスパス上に置く必要があります。

javax.xml.registry.ConnectionFactory

JAXR Provider for UDDI を 使用するには、まず、システム・プロパティー「javax.xml.registry.ConnectionFactoryClass」を 「com.ibm.xml.registry.uddi.ConnectionFactoryImpl」に設定して、 ConnectionFactory 実装クラスの名前を指定する必要があります。これを指定しない場合は、 デフォルトの値「com.sun.xml.registry,common.ConnectionFactoryImpl」が使用されますが、 これは実際には見つかりません。このため、ConnectionFactory.newInstance() メソッドが呼び出されると、 JAXRException が発生します。 JAXR Provider for UDDI は、JNDI 経由の ConnectionFactory の検索には 対応していません。

javax.xml.registry.Connection プロパティー

接続を取得する前に、 JAXR ConnectionFactory で java.util.Properties オブジェクトを設定することで接続固有のプロパティーを指定する必要があります。 JAXR 仕様では、これらのプロパティーの完全リストが定義されています。 次の表は、そのうちの重要度の高い 3 つのプロパティーと、 JAXR Provider for UDDI を使用して UDDI レジストリーにアクセスする際に必要な その値をリストしたものです。必須の接続プロパティーは「javax.xml.registry.queryManagerURL」のみですが、 「javax.xml.registry.lifeCycleManagerURL」も設定しておくこと、 「javax.xml.registry.security.authenticationMethod」のデフォルト値を理解しておくことをお勧めします。 JAXR 仕様で定義されるその他の接続プロパティーはオプションであり、 その値は UDDI レジストリーに固有のものでは ありません。JAXR Provider for UDDI は、これ以外のプロバイダー固有のプロパティーは 定義しません。
プロパティー 説明
javax.xml.registry.queryManagerURL UDDI レジストリーの UDDI バージョン 2 用照会 API の URL。通常は、「http://<hostname>:<port>/uddisoap/inquiryapi」のような形式になります。 このプロパティーは必須です。
javax.xml.registry.lifeCycleManagerURL UDDI レジストリーの UDDI v2 用公開 API の URL。通常は、「http://<hostname>:<port>/uddisoap/publishapi」のような形式になります。 このプロパティーを指定しない場合は、デフォルトで javax.xml.registry.queryManagerURL プロパティーの値が使用されますが、 UDDI レジストリーの URL は、通常は、照会 API および公開 API の URL とは異なるため、 両方のプロパティーを指定することをお勧めします。
javax.xml.registry.authenticationMethod レジストリーによる認証時に使用する認証方式。 値は「UDDI_GET_AUTHTOKEN」または「HTTP_BASIC」のいずれかです。どちらの値も指定しない場合は、 「UDDI_GET_AUTHTOKEN」がデフォルト値になります。 詳しくは、下記の『認証とセキュリティー』のセクションを参照してください。

認証とセキュリティー

認証

接続プロパティー javax.xml.registry.authenticationMethod は、 UDDI レジストリーによる認証時に使用する方式を JAXR プロバイダーに指示します。 このプロパティーでサポートされている値は「UDDI_GET_AUTHTOKEN」と「HTTP_BASIC」です。 JAXR Provider for UDDI は、 「CLIENT_CERTIFICATE」や「MS_PASSPORT」の認証方式には対応していません。このプロパティーを設定しない場合、 デフォルトの認証方式は「UDDI_GET_AUTHTOKEN」になります。

UDDI_GET_AUTHTOKEN

JAXR プロバイダーは、 レジストリーによる認証に UDDI V2 の get_authToken API を使用します。 get_authToken 呼び出しは、接続のクレデンシャルが設定されたときに JAXR プロバイダーによって自動的に行われ、その呼び出しで戻される UDDI V2 authToken は JAXR プロバイダーによって保管されて、以後の UDDI 公開 API 呼び出しで 使用されます。

HTTP_BASIC

JAXR プロバイダーは、 レジストリーによる認証に HTTP 基本認証を使用します。 これは、セキュリティーが有効になっている場合に WebSphere Application Server によってサポートされます。 UDDI V2 get_authToken API 呼び出しは行われませんが、代わりに、 UDDI API 呼び出し (照会でも公開でも) が行われるたびに、 HTTP 基本認証を使用してユーザー名とパスワードが HTTP ヘッダーで送信されます。 UDDI レジストリーが HTTP 基本認証を必要としない場合は、 クレデンシャルは無視されます。

JAXR プロバイダーは、UDDI バージョン 2 SOAP 照会 API および公開 API を使用します。UDDI レジストリー・インターフェースのアクセス制御で説明されているように、これらの API は保護されています。

SSL (Secure Sockets Layer) の使用

SSL を使用すると、JAXR Provider for UDDI と UDDI レジストリーの間の HTTP トラフィックを暗号化できます。 SSL を使用するためには、JAXR クライアント・プログラムで、 以下を実行する必要があります。
  1. 接続プロパティー「javax.xml.registry.queryManagerURL」および「javax.xml.registry.lifeCycleManagerURL」を 設定する場合は、プロトコルが「https」の URL と、SSL を使用して UDDI レジストリーにアクセスする際の 正しいポートを指定します。UDDI レジストリーの HTTPS 用デフォルト・ポートは 9443 です。SSL が必要なのは、 ほとんどの場合、lifeCycleManager URL (UDDI 公開 API URL) のみです。
  2. 使用される JSSE (Java Secure Sockets Extension) インプリメンテーションに従って、 java.security.Security オブジェクトに新規セキュリティー・プロバイダーを追加します。 WebSphere Application Server で提供される JVM の下で実行する場合、 IBM が提供する JSSE は自動的にクラスパス上に置かれます。IBM セキュリティー・プロバイダーを次のように追加します。
    java.security.Security.addProvider(new com.ibm.jsse.JSSEProvider());
  3. システム・プロパティー「javax.net.ssl.trustStore」を、 クライアント・トラストストア・ファイルのファイル名に設定します。 クライアント・トラストストア・ファイルは Java 鍵ストア (.jks) ファイルであり、 ここには UDDI レジストリーのサーバー証明書が含まれていなければなりません。 鍵ストア・ファイルは、ikeyman ツールで管理できます。
  4. システム・プロパティー「javax.net.ssl.trustStorePassword」を設定します。これは、 クライアント・トラストストア・ファイルを開くのに使用するパスワードです。
  5. 本バージョンの WebSphere Application Server で提供されるレベルより古い IBM バージョンの JVM を 使用している場合は、システム・プロパティー「java.protocol.handler.pkgs」を 「com.ibm.net.ssl.internal.www.protocol」に設定する必要があります。 SSL および ikeyman ツールについて詳しくは、このインフォメーション・センター内の SSL および IKEYMAN を参照してください。

内部分類法

JAXR Provider for UDDI では、 以下のような内部分類法を提供しています。
分類法 ClassificationScheme 名 (UDDI tModel 名) ClassificationScheme ID (UDDI バージョン 2 tModelKey)
NAICS 1997 ntis-gov:naics:1997 UUID:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2
NAICS 2002 ntis-gov:naics:2002 UUID:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2
UNSPSC 3.1 unspsc-org:unspsc:3-1 UUID:DB77450D-9FA8-45D4-A7BC-04411D14E384
UNSPSC 7 unspsc-org:unspsc UUID:CD153257-086A-4237-B336-6BDCBDCC6634
ISO3166 2003 ubr-uddi-org:iso-ch:3166-2003 UUID:4E49A8D6-D5A2-4FC2-93A0-0411D8D19E88

UDDI バージョン 3 レジストリーでは、 上記分類法のすべてに対応する tModel が使用できます。JAXR Provider を使用して UDDI バージョン 2 レジストリーに アクセスする場合は、NAICS 1997、UNSPSC 3.1、および ISO3166 に対応する tModel のみが 使用可能になります。

カスタム内部分類法

ユーザーが、 独自のカスタム内部分類法を提供することもできます。新規のカスタム内部分類法を作成して、 それを JAXR プロバイダーで使用できるようにするには、以下のステップに従います。
  1. 分類法のエレメント・データを含むテキスト・ファイルを作成します。一例として、plugins/com.ibm.uddi_1.0.0 にある iso3166-2003-data.txt ファイルを参照してください。 これは、 提供されている ISO 3166 分類法の分類法データ・ファイルです。最初の数行は次のようになっています。
    iso3166#--#World#--
    iso3166#AD#Andorra#--
    iso3166#AE#United Arab Emirates#--
    iso3166#AE-AJ#'Ajm?n#AE
    iso3166#AE-AZ#Ab? Z?aby[Abu Dhabi]#AE
    iso3166#AE-DU#Dubayy [Dubai]#AE
    iso3166#AE-FU#Al Fujayrah#AE
    iso3166#AE-RK#Ra’s al Khaymah#AE
    iso3166#AE-SH#Ash Sh?riqah [Sharjah]#AE
    iso3166#AE-UQ#Umm al Qaywayn#AE
    iso3166#AF#Afghanistan#--
    iso3166#AF-BAL#Balkh#AF
    iso3166#AF-BAM#B?m??n#AF
    各行は、分類法の 1 つのエレメント、または分類法概念ツリーの 1 つの概念を表しています。 各行の形式は次のようになっています。
    <taxonomy ID>#<element value>#<element name>#<parent element value>
    トークン 説明
    <taxonomy ID> 分類法 ID は、分類法のすべてのエレメントで同じです。
    <element value> 概念値 (UDDI keyValue)。
    <element name> 概念名 (UDDI keyName)。
    <parent element value> これによって、分類法ツリー内のエレメントの親エレメントが定義されます。 データ・ファイル内のすべてのエレメント (ルート・エレメントは除く) について、別の行でそのエレメントの親エレメントを定義する必要があります。ルート・エレメントは、 それ自身を親として定義することで表されます。ルート・エレメントは 1 つだけ必要で、 親のないエレメントがあってはなりません。
    # 区切り文字。「#」でなければならないということはなく、 taxonomyConfig.properties ファイルで分類法ごとに定義できます。
  2. 新しい内部分類法を表示するには、ClassificationScheme (UDDI tModel) を UDDI レジストリーに保管します。 これは、javax.xml.registry.BusinessLifeCycleManager.saveClassificationSchemes() メソッドで実行できます。
  3. 新規分類法を taxonomyConfig.properties ファイルに追加します。
    1. com.ibm.uddi_1.0.0.jar ファイルのルートから、 提供された taxonomyConfig.properties ファイルを コピーします。

      提供された taxonomyConfig.properties ファイルの内容は、 次のとおりです。
      naics-1997	= UUID:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2, naics-1997-data.txt,	#
      naics-2002	= UUID:1FF729F2-1948-46CF-B660-31EC107F1663, naics-2002-data.txt,	#
      unspsc		= UUID:DB77450D-9FA8-45D4-A7BC-04411D14E384, unspsc-data.txt,    	#
      unspsc7_data	= UUID:CD153257-086A-4237-B336-6BDCBDCC6634, unspsc7-data.txt,   	#
      iso3166-2003	= UUID:4E49A8D6-D5A2-4FC2-93A0-0411D8D19E88, iso3166-2003-data.txt,#
      
      このファイルでは、提供された内部分類法ごとに 1 行が費やされ、 その形式は次のようになっています。
      <taxonomy ID> = <tModelKey>,<data filename>,<data file delimiter>
      トークン 説明
      <taxonomy ID> 各分類法の識別のために、JAXR プロバイダーが内部的に使用します。 対応する分類法データ・ファイルの分類法 ID と同じにする必要はありません。
      <tModelKey> 対応する UDDI tModel の tModelKey。 (対応する JAXR ClassificationScheme の ID)。
      <data filename> 対応する分類法データ・ファイルの名前。
      <data file delimiter> 分類法データ・ファイルで使用される区切り文字。 提供されている内部分類法ではすべて「#」が使用されていますが、 ユーザー提供の内部分類法では別の区切り文字を使用してもかまいません。
    2. taxonomyConfig.properties ファイルのコピーに、 新規分類法のための新しい行を追加します。既存の分類法をファイルから除去しないでください。 除去すると、JAXR プロバイダーがその分類法を使用できなくなります。
  4. コピーした taxonomyConfig.properties ファイルを、jaxruddi.jar の前の Java クラスパスに 追加します。
  5. 新規分類法が taxonomyConfig.properties ファイルに追加される前に開始された JAXR クライアント・プログラムがまだ実行中である場合、 その新規分類法を選ぶには新しく接続を作成する必要があります。

内部分類法に関する重要事項

個々の内部分類法は、 JAXR 接続のたびに一度ずつ、メモリーにロードされます。分類法の ClassificationScheme は、 接続が作成された時点で作成されます。それに関連した UDDI tModel はこのときにレジストリーから取得され、 ClassificationScheme 属性の取り込みに使用されます。 分類法の概念オブジェクト・ツリーが作成されるのは、 ユーザーが最初に ClassificationScheme を要求してからです。同じ内部分類法に対して同じ接続を使用して行われるそれ以後の要求は、 すべて同じオブジェクト・ツリーを戻します。

概念オブジェクト・ツリーの変更

ClassificationScheme および概念オブジェクト・ツリーは、 接続ごとの内部分類法につき 1 つしかないので、ユーザーは、概念ツリーの任意の一部をプログラマチックに変更することはできません。 これは、この分類法に対する、同じ接続を使用する将来のすべての要求が、 変更された (そしておそらく無効な) オブジェクトを戻すことになるためです。 概念ツリーをプログラマチックに変更しても、それに関連した分類法データ・ファイルは変更されません。 ユーザーが、ユーザー定義の内部分類法の値を変更したい場合は、 まず分類法データ・ファイルを変更してから新規接続を作成し、 新規概念ツリーでその変更内容を選出する必要があります。

ClassificationScheme の変更

同様に、 ユーザーは、内部 ClassificationScheme をプログラマチックに変更することはできませんが、 ユーザー定義の内部 ClassificationScheme を変更してから保管する場合は別です。プログラマチックな変更の選出には、 新規接続は必要ありません。

ロギングおよびメッセージ

UDDI4J ロギング

JAXR Provider for UDDI は、UDDI レジストリーとの通信に UDDI4J バージョン 2 を 使用します。UDDI4J 独自のロギングは、システム・プロパティー「org.uddi4j.logEnabled」の値を「true」に設定することで有効にすることができます。 これにより、標準エラー・ログに、 すべての UDDI 要求の XML 要求および応答の本文が出力されます。

トレース

エントリー、出口、例外、警告、デバッグの各トレースは、 commons-logging によって提供されます。commons-logging について詳しくは、http://jakarta.apache.org/commons/logging/ を参照してください。 トレースが作成されるのは、JAXR クライアントでトレースが構成されている場合に限られます。 エントリー・トレース、出口トレース、およびデバッグ・トレースでは、 デバッグ・レベルのロギングが使用されます。 例外トレースと警告トレースでは、情報レベルのロギングが使用されます。さらに、 情報レベル・ロギングは個々の UDDI4J 要求が行われる前に提供されます。

標準エラー・ログ・メッセージ

InternalTaxonomyManager、EnumerationManager、 および PostalSchemeManager が System.err に警告メッセージを送信するのは、必ずしも例外とは言えないが、 ユーザーに通知しておく必要があるエラー状態が発生した場合です。 例えば、分類法データ・ファイルに無効な行が含まれている場合、 内部分類法に対応する tModel がレジストリー内に見つからない場合などです。




関連概念
UDDI の Java API for XML Registries (JAXR) プロバイダー
関連タスク
UDDI レジストリーの使用
参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 7:44:53 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/rwsu_jaxr.html