ヘッダーをスキップ
TxRPCを使用したOracle Tuxedoアプリケーションのプログラミング
  目次へ移動
目次

前
 
次
 

5 アプリケーションの実行

このトピックには次の項が含まれます:

前提知識

RPCサーバーを追加するための構成の変更を行うOracle Tuxedo ATMIシステムの管理者は、ASCII構成ファイル(形式についてはUBBCONFIG(5)を参照)の作成方法と、tmloadcf(1)を用いたバイナリ構成ファイルの読込みについての知識を持っている必要があります。これらのアクティビティについては、Oracle Tuxedoシステムの管理で説明されています。

アプリケーションの構成方法

RPCサーバーの構成は、リクエスト/レスポンス・サーバーの場合と同様に行います。RPCサーバーやRPCサーバーのグループごとに、SERVERSページ内にエントリが1つ必要です。(MAXを1よりも大きな値にセットすると、1つのエントリで複数のRPCサーバーが構成できます。)必要に応じてRQADDRを指定すると、RPCサーバーの複数のインスタンスが同一のリクエスト・キューを共有します(複数サーバー、単一キュー構成)。CONVパラメータは指定しないか、あるいはNに設定(例: CONV=N)する必要があります。「アプリケーション例」の構成ファイル例を参照してください。

サーバーがトランザクションの一部になる場合には、TLOGDEVICEをもつマシン上のグループに存在する必要があります。GROUPSエントリは、関連するリソース・マネージャへのアクセスに用いるTMSNAMEOPENINFO文字列を使用して構成される必要があります。

SERVICESエントリの指定はオプションです。これを指定した場合、サービス名は前章で説明したとおり、インタフェース名とバージョン番号に基づく必要があります。このエントリが必要になるのは、デフォルトの値とは異なる特別な負荷、優先度、トランザクション時間を指定する場合です。また、このエントリは、AUTOTRAN機能をオンにするためにも使用されます。この機能をオンにすると、入力リクエストがトランザクション・モードではない場合に、サービスに対してトランザクションが自動的に起動されるようにします。処理されるバッファの種類はCARRAYだけなので、サービス・エントリを使用してバッファの種類BUFTYPEを指定しないでください。また、ルーティングはRPCリクエストに対してはサポートされていないので、ROUTINGも指定しないでください。

アプリケーションを起動する前に、tmloadcf(1)コマンドを用いてASCII構成ファイルをバイナリTUXCONFIGファイルにロードします。

tmconfigコマンドを使用すると、起動したアプリケーションにRPCサーバー用エントリを追加できることに注意してください。追加方法については、『Oracle Tuxedoコマンド・リファレンス』のtmconfigwtmconfig(1)を参照してください。

アプリケーションの起動と停止

構成を変更したときには、tmboot(1)を用いてアプリケーションを起動してください。tmshutdown(1)を用いて、アプリケーションを停止します。「アプリケーション例」の例を参照してください。

RPCサーバーの起動と停止方法は、リクエスト/レスポンス・サーバーのものと同じです。それらの起動や停止は、構成全体の一部として行うときには-yオプション、グループの一部として行うときには-gオプション、論理マシンの一部として行うときには-lオプション、サーバー名で行うときには-sオプションを使用します。

アプリケーションの管理

管理インタフェース内では、RPCサーバーはリクエスト/レスポンス・サーバーとして表現されます。前に説明したとおり、tmconfigを使用すればRPCサーバーとサービスの動的再構成が可能です。詳細は、『Oracle Tuxedoコマンド・リファレンス』のtmconfigwtmconfig(1)を参照してください。tmadmin(1)コマンドによりRPCサーバーをモニターできます。tmadmin printserverコマンドを用いて、RPCサーバー名および関連するランタイム情報(たとえば、サービスやオペレーションの実行、ロードなど)を出力できます。またprintserviceコマンドを使用して、利用可能なRPCサービス(インタフェース)を出力できます。出力例については、「アプリケーション例」の例を参照してください。

動的サービス通知の使用

RPCサービスは、リクエスト/レスポンス・サービスの制御と同じ方法で動的に制御可能です。すでに説明したとおり、サービス名はオペレーションの名前ではなく、インタフェース名とバージョン番号でした。一般的に、サービス名は、-sオプションを使用して、buildserver(1)が実行されるときに指定され、サーバーが-Aオプションを使用して起動されるときに自動的に通知されます。サービス(インタフェース)名を動的に通知する方法としては、advコマンドを用いてtmadminから通知するか、あるいはサーバー内から関数tpadvertise(3c)を用いて通知します。サービス(インタフェース)名の動的に通知解除する方法としては、unadvコマンドを用いてtmadminから解除するか、サーバー内から関数tpunadvertise(3c)を用いて解除します。サービス名は、tmadmin(1)から一時的に使用停止したり、停止解除(再開)したりできます。サービス名の通知解除、または使用停止を行うと、関連のあるインタフェース内で定義されたオペレーションはすべて利用できなくなることに注意してください。