この章では、Oracle Tuxedo Scripting Tool (TXST)について説明します。また、TXSTコマンド行スクリプト・インタフェースを使用して、Tuxedoの実行中インスタンスの構成、管理、およびこれらへの変更の永続化を行い、サーバー実行時イベントをモニターおよび管理する方法を説明します。
Tuxedo Scripting Tool (TXST)は、Tuxedoドメインの管理、およびモニターに使用できるコマンド行スクリプト環境です。TXSTスクリプト環境は、Javaのスクリプト・インタプリタであるJythonをベースとしています。TXSTでは、ローカル変数、条件変数、フロー制御文など、標準のJython機能に加え、Tuxedoに固有の一連のスクリプト機能(コマンド)を使用できます。http://www.jython.orgを参照してください。
スクリプト・ツールはオンラインで使用できます(実行中のTuxedoドメイン、またはtlistenプロセスに組み込まれたJMXエージェントに接続した状態で)。TXSTコマンドの詳細は、「TXSTコマンドおよび変数リファレンス」を参照してください。
オンラインのTXSTにより、マネージドBean (MBean)へのアクセスが簡単になります。Mbeanは、JMXによって管理できる基礎リソースの管理インタフェースを提供するJavaオブジェクトです。
TXSTがTuxedoドメインに接続されているときに、スクリプト・ツールを使用してMBeanのナビゲートと問合せを行い、インスタンスに構成データを提供できます。TXSTがJMXエージェントに接続されているとき、その機能はMBeansがサポートするコマンドのみに制限されます。
TXSTはコマンド行インタプリタで、対話形式でコマンド・プロンプトから1つずつ入力されたコマンド、バッチ形式でファイル(スクリプト)に指定されたコマンド、またはJavaコードに組み込まれたコマンドを解釈します。操作モードは、TXSTコマンドを発行する方法を表します。
コマンドを入力すると応答がコマンド行プロンプトに表示される対話モードは、スクリプトを構築する前にツールについて学習したり、コマンド構文を試作したり、構成オプションを確認したりするのに役立ちます。対話形式によるTXSTの使用は、特に構成に重要な変更を加えた後、即座にフィードバックを取得するために有用です。TXSTスクリプト・シェルは、Tuxedoドメインのインスタンスとの永続的な接続を維持します。ユーザー・セッション全体を通して永続的な接続が維持されるので、インスタンスに対して実行される複数のステップを取り込むことができます。詳細は、「ユーザー対話の記録」を参照してください。
スクリプトは、シェル・スクリプトと同様に、ユーザーからの入力を必要とすることなくTXSTコマンドのシーケンスを呼び出します。スクリプトは、.pyファイル拡張子の付いたテキスト・ファイル(例: filename.py)にTXSTコマンドを格納します。スクリプト・ファイルは、3つのモードで使用します(スクリプトによるTXSTの呼出し、Jythonコマンドを使用したスクリプトの実行、およびAntビルド・ファイルを使用したスクリプトの呼出し)。「スクリプトの実行」を参照してください。
組込みモードでは、Javaコード内でTXSTインタプリタをインスタンス化し、それを使ってTXSTコマンドおよびスクリプトを実行します。startRecording()とstopRecording()を除いて、対話モードとスクリプト・モードで使用するすべてのTXSTコマンドと変数を組込みモードで実行できます。
コード・リスト1は、TXSTインタプリタのインスタンスをインスタンス化し、これを使用して実行中のドメインに接続し、サーバーを作成する方法を示しています。
import java.util.*;
import oracle.tuxedo.jmx.tux.jyscript.TXSTInterpreter;
import org.python.util.InteractiveInterpreter;
public class EmbeddedTXST {
static InteractiveInterpreter interp = null;
EmbeddedTXST() {
interp = new TXSTInterpreter();
}
private static void connect() {
interp.exec("connect('//localhost:5037', 'simpapp', ‘38075’)");
}
private static void create_server() {
StringBuffer buffer = new StringBuffer();
buffer.append("cd('simple/GROUP1')\n");
buffer.append("srv1= create(‘simpserv’, ‘SERVER’, srvID=40)\n");
buffer.append("print 'Script ran successfully...'\n");
interp.exec(buffer.toString());
}
public static void main(String[] args){
new EmbeddedTXST();
connect();
create_server();
}
}
次の項では、TXSTを設定および使用するための手順の概要を示します。
TXSTを起動するには、コマンドtxst.shを入力します。
txst: /offline>
txst.sh
は、$TUXDIR/bin
内にあります。txst.sh
を使用してTXSTを起動する場合は、CLASSPATH
を設定する必要はありません。
前述のようにCLASSPATH
に関連したjarファイルを追加した場合は、コマンドjava oracle.tuxedo.TXST
を入力できます。次に例を示します。
#export CLASSPATH=$CLASSPATH:$TUXDIR/jmx/jython-standalone.jar:$TUXDIR/jmx/tmjmx_tux.jar:$TUXDIR/jmx/tmjmx_metadata.jar
# java oracle.tuxedo.TXST
Initializing Tuxedo Scripting Tool (TXST) ...
Jythonは、初回の起動時に検出できたすべてのjarファイルをスキャンします。システムによっては、この処理の完了に数分かかる場合があり、TXSTがプロンプトをすぐには返さないことがあります。
Welcome to Tuxedo Administration Scripting Tool
Type help() for help on available commands
txst:/offline>
TXSTコマンドを入力する際には、次の規則に従ってください。「TXSTコマンドおよび変数リファレンス」も参照してください。
TXSTは、3種類のスクリプト実行方法を備えています。このガイドに示すスクリプト例を実行するには、.pyファイル拡張子の付いたテキスト・ファイル(例: filename.py)にコマンドをコピーし、保存します。このテキスト・ファイルは、次に示すスクリプトを実行するためのコマンドとともに使用します。script.pyファイルを最初から作成する際にテンプレートとして使用できる、サンプル・スクリプトが用意されています。スクリプトにより、実行中のTuxedoドメインにTXSTが接続される場合は、スクリプトを実行する前にTuxedoドメインを開始してください。
java oracle.tuxedo.TXST myscript.py
execfile(‘myscript.py’)
connect("//localhost:5037", "simpapp", "38075");
cd('simple/GROUP1')
ls('c')
disconnect()
exit()
スクリプトは、シェル・スクリプトと同様に、ユーザーからの入力を必要とすることなくTXSTコマンドのシーケンスを呼び出します。スクリプトは、.pyファイル拡張子の付いたテキスト・ファイルにTXSTコマンドを格納します。
TXSTは、Antビルド・ファイルからTXSTスクリプトを呼び出すカスタムantタスクを提供します。独自にインストールしたAntでこのタスクを使用する場合は、ビルド・ファイルに次のタスク定義を追加します。
<taskdef name ="txst" classname="oracle.tuxedo.jmx.tux.jyscript.TXSTTask" />
AntスクリプトからTXSTを実行する手順は、次のとおりです。
TUXDIR、CLASSPATH、JAVA_HOME、ANT_HOME
など)。<target name="GetParameters">
<txst debug="false" failOnError="false"
executeScriptBeforeFile="true" fileName="./test.py">
<script>
connect("//slce04cn03:5067","simpapp","38175")
ls()
print cmo.GetParameters()
</script>
</txst>
</target>
txst Antタスクを使用する場合は、fileName属性を使用してTXSTスクリプト(.py)内でTXSTコマンドを指定できます。また、ビルド・ファイル内にTXSTスクリプト・コマンドを<script>タグで囲んで組み込むこともできます。
bash-3.2$ ant getParameters
<txst properties="propsFile" filename=”filename” arguments="arglist"
failOnError=”value” executeScriptBeforeFile="value” debug=”value” >
<script>
txst-commands
</script>
次の表に、txst Antタスクの一部として指定できるAntタスク属性の定義を示します。
次の例では、test.pyはTXSTコマンドを格納しているファイルです。「script」ノード内にTXSTコマンドを追加することもできます。
<project default="all" basedir=".">
<taskdef name ="txst"
classname="oracle.tuxedo.jmx.tux.jyscript.TXSTTask" />
<target name="getParameters">
<txst debug="false" failOnError="false"
executeScriptBeforeFile="true" fileName="./test.py">
<script>
connect("//slce04cn03:5067","simpapp","38175")
cmo.GetParameters()
</script>
</txst>
</target>
</project>
このバージョンでは、TXSTはMavenをサポートしません。
txst:simpapp_38075:/>exit()
c:\jython\bin>
TXSTコマンドに関する情報を表示するには、コマンドのドキュメント文字列を出力します。
たとえば、disconnectコマンドの情報を表示するには、次のコマンドを入力します。
txst:/simpapp>help(‘disconnect’)
This function is used to disconnect from tuxedo server instance.
Arguments list:
()
txst: /simpapp > disconnect()
すべてのTXSTコマンド入力の記録を開始および停止するには、次のように入力します。
startRecording(outputFile)
stopRecording()
startRecordingコマンドを入力する際には、TXSTコマンドを格納するファイルのパス名を指定する必要があります。
たとえば、TXSTコマンドをrecord.pyファイルに記録するには、次のコマンドを入力します。
txst:/simpapp> startRecording('record.py')
詳細は、「startRecording」および「stopRecording」を参照してください。
ファイルへのTXST出力のリダイレクトを開始および停止するには、次のように入力します。
redirect(outputFile,[toStdOut])
stopRedirect()
TXST出力をリダイレクトする先のファイルのパス名を指定する必要があります。オプションで、TXST出力を標準出力に送るかどうかを指定することもできます。toStdOut引数のデフォルトはTrueです。
たとえば、TXST出力を現行ディレクトリのlogs/txst.logファイルにリダイレクトし、出力が標準出力に送られないようにするには、次のコマンドを入力します。
txst:/simpapp> redirect('./logs/txst.log', False)
詳細は、「redirect」および「stopRedirect」を参照してください。
オンラインのTXSTでは、MBeanに簡単にアクセスできます。JMX APIでは、MBeanに対して照会を行うためにJMXオブジェクト名を使用する必要がありますが、TXSTでは、ファイル・システム内のファイルの階層をナビゲートするのと同様なやり方で、MBeanの階層を移動できます。
Tuxedoは、MBeanを階層データ・モデルにまとめます。TXSTファイル・システムでは、MBean階層はドライブに、MBeanインスタンスはディレクトリに、MBean属性とオペレーションはファイルに相当します。UNIXまたはWindowsコマンド・シェルでファイル・システムをナビゲートするときと同じように、TXSTはcd、ls、pwdなどのコマンドを使用して、MBeanの階層構造を移動します。MBeanインスタンスにナビゲートしたら、TXSTコマンドを使用してMBeanと対話します。
階層内で、ルート・ディレクトリはDomainMBeanです。MBeanタイプの各インスタンスはサブディレクトリ、MBean属性とパラメータはMBeanインスタンス・ディレクトリの下のノード(ファイルと同様)です。
TXSTがTuxedoドメインのインスタンスに最初に接続すると、cmo (現在の管理オブジェクト)がすべての構成管理オブジェクトのルート(DomainMBean)に初期化されます。MBeanタイプにナビゲートすると、cmoの値は親MBeanを反映します。MBeanインスタンスにナビゲートすると、リスト3に示すように、TXSTはcmoの値を現在のMBeanインスタンスに変更します。
TXST変数の詳細は、「TXSTコマンドおよび変数リファレンス」を参照してください。
txst:/offline>connect("//slce04cn03:5035", "simpapp", "58103")
txst:simpapp_58103:/>cmo.getMbeanName()
simpapp_58103:type=tuxedo_domain
txst:simpapp_58103:/>cd('L1')
txst:simpapp_58103:/L1>cmo.getMbeanName()
simpapp_58103:type=tuxedo_machine,LMID=L1
リスト4のコマンドは、Tuxedoドメイン・インスタンスに接続し、ナビゲートして、DomainMBean内のMbeanを表示するようにTXSTに指示します。引数を指定しない場合は、lsコマンドによってすべての子MBeanと属性が表示されます。
txst:/offline>connect("//slce04cn03:5035", "simpapp", "58103")
txst:simpapp_58103:/>ls()
attributes:
State ACTIVE
parameters:
TA_AUTHSVC
TA_AUTOTRAN N
TA_BBLQUERY 30
TA_BLOCKTIME 6
TA_CLASS T_DOMAIN
TA_CMTRET COMPLETE
TA_COMPONENTS
TA_CURDRT 0
TA_CURGROUPS 1
TA_CURINTERFACES 0
TA_CURMACHINES 0
TA_CURQUEUES 2
TA_CURRFT 0
TA_CURRTDATA 0
TA_CURSERVERS 2
TA_CURSERVICES 9
TA_CURSTYPE 1
TA_CURTYPE 12
TA_DBBLFAILOVER 0
TA_DBBLWAIT 2
TA_DOMAINID simpapp
TA_ENCRYPTION_REQUIRED N
TA_ERROR 0
TA_GID 8500
TA_HWDRT 0
TA_HWGROUPS 1
TA_HWINTERFACES 0
TA_HWMACHINES 1
TA_HWQUEUES 2
TA_HWRFT 0
TA_HWRTDATA 0
TA_HWSERVERS 2
TA_HWSERVICES 9
TA_INSTANCE_AFFINITY NONE
TA_IPCKEY 58103
TA_LDBAL N
TA_LICEXPIRE
TA_LICMAXUSERS 10000000
TA_LICSERIAL
TA_MASTER L1
TA_MAXACCESSERS 15
TA_MAXACLGROUPS 16384
TA_MAXBUFSTYPE 32
TA_MAXBUFTYPE 16
TA_MAXCONV 1
TA_MAXDRT 0
TA_MAXGROUPS 100
TA_MAXGTT 100
TA_MAXINTERFACES 150
TA_MAXMACHINES 256
TA_MAXNETGROUPS 8
TA_MAXOBJECTS 1000
TA_MAXQUEUES 20
TA_MAXRFT 0
TA_MAXRTDATA 8
TA_MAXSERVERS 20
TA_MAXSERVICES 50
TA_MAXSPDATA 18504
TA_MAXTRANTIME 0
TA_MIBMASK 0
TA_MODEL SHM
TA_MORE 0
TA_NOTIFY SIGNAL
TA_OCCURS 1
TA_OPTIONS
TA_PERM 384
TA_PREFERENCES
TA_SANITYSCAN 12
TA_SCANUNIT 10
TA_SCANUNIT_EXT 10
TA_SECURITY NONE
TA_SEC_PRINCIPAL_LOCATION
TA_SEC_PRINCIPAL_NAME
TA_SEC_PRINCIPAL_PASSVAR
TA_SGRPFAILOVER 0
TA_SIGNATURE_AHEAD 3600
TA_SIGNATURE_BEHIND 604800
TA_SIGNATURE_REQUIRED N
TA_SSL_RENEGOTIATION 0
TA_STATE ACTIVE
TA_SYSTEM_ACCESS FASTPATH
TA_TRANTIME 30
TA_UID 532
TA_USIGNAL SIGUSR2
childBean:
tuxedo_machine L1
additional info:
現在のBeanの子Beanまたは属性(あるいはその両方)をすべて表示します。
必要に応じて引数を指定することにより、出力を制御できます。引数を指定しない場合は、ドメイン内のすべての子Beanと属性が表示されます。出力は文字列で返されます。
特定のMBeanを見つけるには、findコマンドを使用できます。TXSTは、指定されたMBeanのパス名を返します。パスで指定されたMBeanを戻すには、getMBeanコマンドを使用します。詳細は、「find」および「getMBean」を参照してください。
txst:simpapp_58103:/>find('ser*')
/L1/GROUP1/server_1
txst:simpapp_58103:/>bean = getMBean('/L1/GROUP1/server_1')
txst:simpapp_58103:/>path = getPath(bean)
txst:simpapp_58103:/>print path
/L1/GROUP1/server_1
有効期間中、実行されるインスタンスは停止、起動、一時停止、再開中、実行中など、複数の動作状態を遷移できます。start、suspend、resume、shutdownなどのTXSTコマンドにより、サーバー・インスタンスの状態に特定の変更が生じます。
TXSTでは、いくつかの方法で指定したオブジェクトを起動および停止できます。選択する方法は、ターゲット・オブジェクトによって異なります。
Tuxedoドメインを起動するには、startDomain()コマンドを呼び出す必要があります。このコマンドは、tlistenプロセスに組み込まれたJMXエージェントにTXSTが接続しているときに使用する必要があります。呼出しが成功すると、Tuxedoドメインに接続できます。「startDomain」を参照してください。
Tuxedoドメインを停止するには、shutdownDomain()
コマンドを呼び出す必要があります。ドメインが正常に停止すると、TXSTはドメインから切断し、JMXエージェントへの接続に戻ります。「shutdownDomain」を参照してください。
マシン、グループおよびサーバーに対しては、start()またはshutdown()を直接呼び出すことができます。ターゲットがサーバーである場合は、2つの方法でこれらのコマンドを操作できます。「起動と停止」を参照してください。
一時停止および再開のサポート対象のMbeanは、マシン、サーバー、ブリッジ、WSH、JSHです。ただし、ターゲット・オブジェクトはこれらのMbeanとは異なります。ターゲットの詳細は、次の表を参照してください。