前へ     目次     索引     DocHome     次へ     
iPlanet Trustbase Transaction Manager 2.2.1 開発者ガイド



第 8 章   Identrus ソリューションの構築


iPlanet Trustbase Transaction Manager プラットフォームと、関連する開発ツールは、基盤となる DTD から、ランタイム環境で使用するサービスのインストールまで、Identrus アプリケーションを開発する手段を提供しています。

この章では、Ping と呼ばれる Identrus アプリケーションの生成について、段階を追って説明します。このアプリケーションの設計は、次の点に焦点を当てています。

  • 開発プロセス全体

  • iPlanet Trustbase Transaction Manager 開発ツールの使用

  • 構成オブジェクトの使用

  • ログマネージャの使用



方法論


開発プロセス

アプリケーションの開発には、基盤となる Identrus 準拠の DTD の入力が必要です。これは一連のスタブ規則や JAR ファイル内のサービスの定義とともに、DTD のすべての要素に対する Java クラスを生成するクラスジェネレータを通じて受け渡されます。次に開発者は、適切なビジネスロジックを、適切なアクションを実行するサービススタブによって呼び出される一連の Java クラスとして実行し、この基盤データを自由に拡張できます。

一連の生成されたファイルと、関連する開発者のファイルは、1 つの JAR ファイルにまとめて iPlanet Trustbase Transaction Manager のディレクトリ構造内に配置します。iPlanet Trustbase Transaction Manager を再起動すると、JAR ファイル内のパッケージ記述子が検索され、この新しいサービスを実行環境内でアクティブ化できるようになります。全体的なプロセスを、図 8-1 にまとめます。

図 8-1    開発プロセス

  


クラスの生成

iPlanet Trustbase Transaction Manager のクラス生成ツールは、メッセージ処理パイプラインの 2 つの場所で使用できる、一連のクラスを作成するように設計されています。2 つの場所とは、次のとおりです。

プレゼンテーション - iPlanet Trustbase Transaction Manager XML パーサでは、クラスを使用して受信 XML が DTD と整合性がとれているか確認

サービス - メッセージの要素にアクセスするビジネスロジック

クラス生成ツールにアクセスするには、JDK 1.2.x 以降がインストールされていることが必要です。JRE には、iPlanet Trustbase Transaction Manager サービスを構築するコンパイラは含まれていません。また、クラスパスが適切に設定されていなければなりません。iPlanet Trustbase Transaction Manager のインストール時に、次のコマンドを実行してください。

cd ../Trustbase/TTM/Scripts
. ./setcp

これにより、CLASSPATH 環境変数が iPlanet Trustbase Transaction Manager ツールに適切な値に設定されます。

クラス生成ツールはコマンドラインオプションからアクセスでき、次のように呼び出します。

java com.iplanet.trustbase.app.classgen.ClassGen [-オプション] <パブリッ ク ID> <DTD ファイル名>

オプションには、次のものがあります。

-help              このヘルプ画面を表示
-d <ディレクトリ>   出力ディレクトリの指定
-o <jar 名>        出力 jar ファイルの指定
-v                 詳細出力
-r                 含まれる DTD すべてに対し、クラスの生成を繰り返す
-root <要素名>     DTD の各ルート要素に対して指定
-stub <クラス名>   作成するスタブサービスの完全指定のクラス名

パブリック ID は、生成するサービススタブの名前です。これは Identrus DTD に必須で、標準的な形式は次のようになります。

-//IDENTRUS//service_name//EN

「service_name」の部分には、DTD で宣言される Identrus サービスを指定します。パブリック ID では大文字と小文字が区別されます。これは生成されるクラスのパッケージ名の一部として使われるので、注意して入力してください。

ツールで生成されるのは、クラスパス上に使用できるクラスの存在しない DTD 要素のクラスのみです。コア Identrus クラスはすでに Trustbase の jar にあるので、新規 Identrus サービスを作成するたびに再生成されることはありません。

「-root」エントリは、メッセージのルート XML 要素となり得る DTD の各要素に対して必ず作成しなければなりません。これは、iPlanet Trustbase Transaction Manager のデフォルトプレゼンテーション層で Identrus メッセージを自動処理するために必要です。

新規メッセージタイプのスタブ iPlanet Trustbase Transaction Manager サービスの生成にツールが必要な場合は、必ず「-stub」オプションを使用します。このスタブクラスの Java ソースファイルは、ツールが終了したときに現在のディレクトリに配置されます。いったん生成が完了したら、スタブクラスの再パッケージは行わないでください。生成された jar ファイルの tbasesvc.properties ファイルに、スタブクラスの完全指定名が記録されています。

クラスジェネレータでは、参照された DTD に対して、読み込みが繰り返されます。参照には、次のものを使用できます。

  • 不完全指定 - DTD がクラスジェネレータを実行しているディレクトリにあることが必要

  • ローカル - file:/// 修飾子を使用

  • 完全指定 - HTTP://www 修飾子を使用

Classgen ツールを呼び出すと、次の出力が生成されます。

  • 次のものを含む zip

    • 一連の生成されたクラス (DTD 内の各エンティティに対して 1 つずつ)

    • クラスの生成で実際に XML パーサによって使用された入力を表す、一連の DTD

    • iPlanet Trustbase Transaction Manager によってサービスの登録に使用された tbasesvc.properties ファイル

  • 現在のディレクトリ内のサービススタブ (「-stub」オプションを使用した場合のみ)

生成された各クラスでは、TbaseElement インターフェイスが実装されます。このインターフェイスには、次の 2 つの役割があります。

  • パーサ - iPlanet Trustbase Transaction Manager の解釈メカニズムで受信する XML メッセージを確認できるようにする

  • サービス - 受信メッセージからデータを取得し、XML を明示的に生成することなく有効な応答を構築する、標準的な手段を提供する

TbaseIdentifiedElement という TbaseElement のサブクラスは、「id」という属性のタイプが「ID」である要素を表します。これにより、XML DSIG 署名を生成または確認する際に、タイプにかかわらず ID の適合性を確認できる方法が提供されます。

TbaseElement のサービス役割は、次の機能を提供します。

  • XML ドキュメント階層の構築

  • 要素属性を名前によって読み取り/書き込み

  • XML ドキュメントのオブジェクトによる表現を確認

  • オブジェクト階層によって記述された XML ドキュメントの文字列による表現を生成

クラスの生成時に「-root」オプションによって識別されたすべての要素は、ベースクラスである com.iplanet.trustbase.identrus.message.IdentrusMessage を拡張することになります。これにより、メッセージが「Identrus Core Network Messaging Definition」に定義されている有効な構造を持ち、フレームワークで必須のメッセージ処理を実行できるようになります。このインターフェイスの使用例は、このマニュアルの最後にあるサンプルのセクションを参照してください。



com.iplanet.trustbase.identrus.message.IdentrusMessage、com.iplanet.trustbase.xml.message.TbaseElement および
com.iplanet.trustbase.xml.message.TbaseIdentifiedElement の API クラスでは、それぞれの機能についてより詳細な情報が提供されています。




サービスの開発

サービスを開発するには、サービススタブを機能ビジネスコンポーネントに取り込みます。

各サービスは、プラットフォームで複製できるように、状態がないことが必要です。つまり、前のセッションステータストランザクションに関する情報を保持することなく、異なるトランザクションやユーザからのメッセージを処理できる必要があります。サービスでセッションやトランザクションのステータスに関する情報を保持する必要がある場合は、データベース内で永続化するようにします。そうでないと、トランザクションの次のメッセージが、クラスタ内の同じホストマシンに送られない場合があります。

すべての Identrus ネットワークメッセージ処理は、クラス生成ツールによって生成されたサービススタブクラスの ProcessIdentrusMessage メソッドの呼び出し前後に、iPlanet Trustbase Transaction Manager プラットフォームで実行されます。図 8-2 に、開発者によって作成された Identrus サービスを配置した場合の、メッセージ処理の流れを示します。この Identrus サービスは、生成されたメッセージライブラリを使用し、iPlanet Trustbase Transaction Manager メッセージ処理スタブによってプロクシされています。

図 8-2    メッセージ処理の流れ

  

つまり、ほとんどの場合、Identrus サービスを開発するために必要な作業は、受信メッセージのビジネス処理を実装するために、生成されたスタブクラスを編集することと、送信メッセージのコアの内容を生成することだけです。

ビジネス処理部分では、メッセージに対する必須の署名確認や生成などの、必須のメッセージ処理を行う必要はありません。これらのコアの処理タスクは、iPlanet Trustbase Transaction Manager のプレゼンテーション層で実行されます。

サービスを開発するには、生成された jar ファイルを、コア iPlanet Trustbase Transaction Manager ライブラリとともに、開発時にクラスパスに配置します。


サービスの構築

メッセージクラスを生成し、スタブサービスのメッセージ処理ロジック拡張機能を開発したら、次に iPlanet Trustbase Transaction Manager サービス jar を構築します。

iPlanet Trustbase Transaction Manager サービス jar を構築する手順は、次のとおりです。

  • 標準的な JDK の jar ツールを使用して、生成した jar ファイルをディレクトリに解凍します。

    mkdir DumpDirectory
    cd DumpDirectory
    jar -xvf ../jarfile.jar
    cd ..

  • 「DumpDirectory」に、メッセージの処理に必要なすべてのクラスをコピーします。これらのクラスすべてで、適切なパッケージ構造が維持されていることを確認します。特に、サービススタブクラスは、クラス生成ツールによって作成されたので、パッケージし直すことはできないことに注意してください。

  • 標準的な JDK の jar ツールを使って、アーカイブを再度作成します。

  • これで jar ファイルを配置することができます。


サービスの配置

サービス jar ファイルを構築したら、iPlanet Trustbase Transaction Manager に配置します。手順は次のとおりです。

  • jar ファイルを ...../Trustbase/TTM/current/deploy ディレクトリにコピーします。

  • 管理コンソールを使って、実行中の iPlanet Trustbase Transaction Manager にサービスを配置します。

  • iPlanet Trustbase Transaction Manager を再起動して、サービスをアクティブ化します。

サービスを配置するには、iPlanet Trustbase Transaction Manager に「administrator」としてログインし、「サービス」メニューから「配置」オプションを選択します。サービス jar を deploy ディレクトリに適切にコピーしていれば、次の図に示すように、新規サービスが「サービス配置」ページに表示されます。



  • を選択してから

    を選択することによって、サービスを配置します。

図 8-3    iPlanet Trustbase Transaction Manager での PingService の配置

  

サービスを認可する必要がある場合は、「認可」-「サービスの追加」を選択します。次に示すように、サービスには役割を割り当てる必要があります。

図 8-4    サービスへの役割の割り当て

  



使用できる役割がない場合は、役割を定義する必要があります。詳細は、『構成およびインストールガイド』を参照してください。




前へ     目次     索引     DocHome     次へ     
Copyright © 2001 Sun Microsystems, Inc. Some preexisting portions Copyright © 2001 Netscape Communications Corp. All rights reserved.

最終更新日 2001 年 3 月 14 日