4.2. WebOTX CORBA アプリケーション(Java)

WebOTXには、いくつかのAPIが用意されています。 これらを使用することにより、アプリケーションを効率よく、かつ安全に実行することができます。

オープン性の高いアプリケーションを作成する場合は、これらのAPIを使用すべきではありません。 しかし、WebOTXの高機能/高信頼の恩恵を受けるためには、 これらのAPIの利用は不可欠なものとなります。

サーバAPI コールバックオペレーション クライアント管理ライブラリ

4.2.1. サーバAPI

○コンポーネント情報の登録 (add)

形式 クラス名 jp.co.nec.WebOTX.WOComponent
public static void add(WOServantCallback woservantcallback)
引数 woservantcallback - 実装情報
機能 コンポーネント初期化関数(運用管理ツールで指定するコンポーネント初期化クラス)にて、 コンポーネント内に定義されている実装情報をWebOTXにするために使用します。 引数 woservantcallback は実装情報のインスタンスを指定します。 複数の実装を定義している場合は、その数だけ呼び出してください。
注意事項 本APIはコンポーネント初期化関数でのみ利用するようにしてください。
それ以外の場所から呼び出しても何も起こりません。

○サーバオブジェクトの生成 (CreateServant)

形式 クラス名 jp.co.nec.WebOTX.WOServantManager
public static org.omg.CORBA.Object CreateServant(WOServantCallback woservantcallback)
引数 woservantcallback - 実装情報
機能 WebOTXに、サーバオブジェクトの生成を通知します。 引数 woservantcallback は生成するオブジェクトの実装情報のインスタンスを指定します。 指定された実装情報に対応するオブジェクトがステートレスだった場合は、 事前生成されているオブジェクトが返ります。ステートフルだった場合は、 新しくオブジェクトを生成されて、そのオブジェクトリファレンスが返ります。
注意事項 本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。
それ以外の場所では利用できません。
アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。

○サーバオブジェクトの解放 (ReleaseServant)

形式 クラス名 jp.co.nec.WebOTX.WOServantManager
public static void ReleaseServant(WOServantCallback woservantcallback, org.omg.CORBA.Object objref)
引数 woservantcallback - 実装情報
objref - オブジェクトリファレンス
機能 WebOTXに、サーバオブジェクトの解放を通知します。 引数 woservantcallback は解放する実装情報のインスタンスを指定します。
注意事項 本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。
それ以外の場所では利用できません。
アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。


○トランザクション終了状態の通知 (TPSSetTxStatus)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static void TPSSetTxStatus(int status)
引数
status - トランザクションの終了状態
0 正常
10 異常(運用管理ツールで指定した動作)
11 異常(オペレーションは停止しない)
12 異常(オペレーションを停止する)
20 再実行
機能 以後のオペレーション実行要求を制御することが可能です。
注意事項 本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。
それ以外の場所では利用できません。
アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。

○データベースオブジェクトの登録 (TPSRegisterDB)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static int TPSRegisterDB(jp.co.nec.WebOTX.WebOTX_DB regdb);
public static int TPSRegisterDB(java.sql.Connection jdbcConnect);
引数
regdb - WebOTX_DBクラスから派生したオブジェクト
jdbcConnect - JDBCのjava.sql.Connectionオブジェクト
返却値
正常終了した場合は0が返ります。異常終了した場合は下記の値が返ります。
1 nullオブジェクトが指定された
99 その他エラー
機能 サーバオブジェクト内で使用するリモートデータオブジェクトをWebOTXサーバへ登録します。 登録するオブジェクトはWebOTX提供のWebOTX_DBクラスから派生したクラスのオブジェクトあるいはJDBCのConnectionオブジェクトです。 例外発生時には、このオブジェクトのrollback()メソッドが呼び出されます。 WebOTX_DBのrollback()メソッドはabstract関数になっていますので、派生したクラスでオーバライドして、ロールバック処理を記述してください。
注意事項 本APIは、サーバオブジェクトのコンストラクタまたはオペレーション処理中でのみ利用できます。
それ以外の場所では利用できません。
アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。

○スレッド、プロセスの強制終了、スレッドのリスタート (TPSAbort)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static void TPSAbort(int aborttype);
引数
aborttype - 動作を指定します
1 スレッドのリスタート
0 スレッドの終了
-1 プロセスの終了
機能 利用者の処理中にスレッドやプロセスを終了したり、スレッドをリスタートしたりすることが可能です。 本関数を呼び出した後は速やかにオペレーションを終了(return)してください。 なお、続けてTPSRestart()を実行した場合は、TPSAbort()を優先的に行います。
注意事項 本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。
それ以外の場所では利用できません。
アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。

○オペレーションのリスタート (TPSRestart)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static void TPSRestart();
機能 利用者の処理を中断し、オペレーションを最初から実行し直します。 本関数を呼び出した後は速やかにオペレーションを終了(return)してください。
注意事項 本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。
それ以外の場所では利用できません。
アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。


○利用者のトレース出力 (TPSUserTrace)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static void TPSUserTrace(int nLevel, String message)
引数
level - トレースレベルを指定します。この値が運用管理ツールで指定した値以下の場合にトレースを出力します。下記定数はWoServerWrapperに定義されています。
LOG_EMERG 0
パニック状態
LOG_ALERT 1
即時に訂正すべきである状態
LOG_CRIT 2
致命的なエラー
LOG_ERR 3
一般的なエラー
LOG_WARNING 4
警告メッセージ
LOG_NOTICE 5
通知メッセージ
LOG_INFO 6
情報メッセージ
LOG_DEBUG 7
デバッグ時のメッセージ
msg - トレースファイルに出力する文字列
機能 利用者のトレースをWebOTXのトレースにあわせて出力します。出力されるファイルは、運用管理ツールで指定します。
トレースレベル2以下の場合、エラーメッセージがsyslogやイベントログに出力されるため、WebOTXの性能が劣化する可能性があります。 エラー発生時以外はトレースレベル2以下を指定しないでください。
注意事項 ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○トレースレベルの取得 (TPSGetUserTraceLevel)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static long TPSGetUserTraceLevel()
返却値 現在のトレースレベル
機能 運用管理ツールで指定しているトレースレベルを取得します。トレースファイルに出力するメッセージを組み立てるかどうかを決めるために使用してください。
注意事項 ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○イベントジャーナルへの出力 (TPSEventJournal)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static long TPSEventJournal(short ejkind, String msg)
引数
ejkind - ジャーナル種別。0x01から0x0fまでの任意の値
msg - イベントジャーナルへ出力するメッセージ (最大 12240バイトです)
返却値 0は正常終了。異常時には負の値を返します。
-1 内部エラー
-2 パラメータ不正
機能 引数 ejkind のジャーナル種別で引数msgをイベントジャーナルに出力します。 コンポーネント名はUSERとなります。また、msgは16進数で出力します。
イベントジャーナルに関しては [ ドメイン構築・基本設定ガイド > 7. WebOTXの内部サービス > 7.1. TPシステム > 7.1.11. 通信情報(イベントジャーナル) ] をご覧ください。
注意事項 ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。


○論理クライアントIDの取得(TPSGetLid)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static String TPSGetLid();
返却値 論理クライアントID
機能 オペレーションの発行元を示す論理クライアントIDを返却します。
注意事項 本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。
しかし、ステートフルサーバオブジェクトに限っては、コンストラクタでも利用できます。
それ以外の場所では利用できません。
アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。

○引数の取得 (TPSGetArgument)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static String[] TPSGetArgument()
返却値 引数の文字列配列
機能 運用管理ツールで指定した引数を文字列配列として返却します。
注意事項 ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○WebOTX情報の取得 (TPSGetServerInformation)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static jp.co.nec.WebOTX.WebOTX_Information TPSGetServerInformation()
返却値 jp.co.nec.WebOTX.WebOTX_Informationオブジェクト。WebOTX_Informationは以下のような構成になっています。
package jp.co.nec.WebOTX;

public class WebOTX_Information
{
    // アプリケーショングループ名
    public String apGroupName;
    // プロセスグループ名
    public String apServerName;
    public static int STATELESS = 0;
    public static int STATEFULL = 1;
    // ステートフルかステートレスか
    public int state;
    public static int THREAD_NONE = 0;
    public static int THREAD_SINGLE = 1;
    public static int THREAD_APARTMENT = 2;
    public static int THREAD_FREE = 3;
    // スレッドモデル
    public int threadModel;
    // IIOPリスナポート番号
    public int iiopPort;
    // クライアント管理ライブラリポート
    public int asyncPort;
    // 単一常駐オブジェクトクラス名
    public String precteatedClassName;
    // OTS連携を行うか
    public boolean isOTS;
    // システムID
    public int systemID; 
    // 接続サーバ名
    public String serverName;
    // 名前サーバ名
    public String nameServer; 
    // Watchサーバを使用するか
    public boolean isWatchServer; 
    // 名前サーバに登録するリファレンスの数(多重度)
    public int multiplexDegree;
    // ファクトリを使うかどうか
    public boolean isFactory;
}
機能 現在のプロセスに設定されているWebOTXの各種設定を返却します。
ステートおよびスレッドモデルはWebOTX R5.1から実装単位に指定可能になりました。 よって、呼び出した実装クラスによって値が変わることがあります。また、実装クラス以外から 呼び出す場合は、注意が必要です。 詳しくは [ 注意制限事項 > 12. Object Broker JavaTM/C++ > 12.1. 注意事項(Java) ] を参照してください。
注意事項 ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。


○ORBの取得 (TPSGetORB)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static org.omg.CORBA.ORB TPSGetORB()
返却値 ORB
機能 WebOTXサーバがアプリケーション起動時に作成した、ORBを取得します。 サーバアプリケーション内でCORBAのサービスを利用したいときに取得してください
注意事項 ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。


○単一常駐オブジェクトの取得 (TPSGetPrecreatedUsersObject)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static java.lang.Object TPSGetPrecreatedUsersObject()
返却値 単一常駐オブジェクトポインタ
機能 WebOTXサーバがアプリケーション起動時に作成した、単一常駐オブジェクトを取得します。 指定が無かったり、オブジェクトの生成に失敗している時はnullオブジェクトを返却します。 各常駐オブジェクトは1スレッドに1つ作成します。
注意事項 本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。
それ以外の場所では利用できません。
アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。

○複数常駐オブジェクトの取得 (TPSGetPrecreatedUsersObjectForPlural)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static java.lang.Object TPSGetPrecreatedUsersObjectForPlural(String ident)
throws
jp.co.nec.WebOTX.exceptions.NotUsePluralPrecreatedUsersObject,
jp.co.nec.WebOTX.exceptions.ArgumentIsNullPointer,
jp.co.nec.WebOTX.exceptions.ArgumentIsNullString,
jp.co.nec.WebOTX.exceptions.NotFound
引数 ident - 常駐オブジェクト識別子
返却値 複数常駐オブジェクトポインタ
例外
jp.co.nec.WebOTX.exceptions.NotUsePluralPrecreatedUsersObject
運用管理ツールで複数常駐オブジェクト指定を行っていません。
jp.co.nec.WebOTX.exceptions.ArgumentIsNullPointer
常駐オブジェクト識別がNULLポインタです
jp.co.nec.WebOTX.exceptions.ArgumentIsNullString
常駐オブジェクト識別がNULL文字列です
jp.co.nec.WebOTX.exceptions.NotFound
常駐オブジェクト識別に該当する常駐オブジェクト識別子は登録されていません。
運用管理ツールの指定とコーディング中の文字列のチェックをしてください。 なお、常駐オブジェクト識別に指定する文字列は大文字と小文字をチェックします。
機能 WebOTXサーバがアプリケーション起動時に作成した、複数常駐オブジェクトを取得します。取得するオブジェクトは引数 ident で指定します。
各常駐オブジェクトは1スレッドに1つ作成します。
注意事項 本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。
それ以外の場所では利用できません。
アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。


○共有プロパティ : プロパティグループの生成(TPSCreatePropertyGroup)

形式 クラス名 jp.co.nec.WebOTX.WOPropertyGroupManager
public int WOPropertyGroup TPSCreatePropertyGroup(String name, int area, WOPropertyGroup[] pgptr);
引数
name -プロパティグループ名を指定します。
area - プロパティグループの範囲を指定します。
WOPropertyGroupManager.WOSP_AREATYPE_HOST
ホスト内でプロパティグループを共有
WOPropertyGroupManager.WOSP_AREATYPE_MONITOR
システム内でプロパティグループを共有
WOPropertyGroupManager.WOSP_AREATYPE_APGROUP
アプリケーショングループ内でプロパティグループを共有
WOPropertyGroupManager.WOSP_AREATYPE_APSERVER
プロセスグループ内でプロパティグループを共有
pgptr - 作成したプロパティグループのオブジェクトを設定します。
返却値
WOPropertyGroupManager.WOSP_RC_DONE
正常終了
WOPropertyGroupManager.WOSP_RC_INVALIDTYPE
areaの指定が不正です
WOPropertyGroupManager.WOSP_RC_INVALIDPOINTER
pgptrの指定が不正です
WOPropertyGroupManager.WOSP_RC_EXCEPTION
内部例外が発生しました
機能 nameで指定したプロパティグループを生成します。 正常に生成できたときは、プロパティグループクラス(WOPropertyGroup)のオブジェクトをpgptr[0]に設定します。 また、既に存在するときは、既存のプロパティグループポインタを設定します。 失敗したときはnullを設定します。
areaはプロパティグループの有効範囲を指定します。 異なるareaに同一名のプロパティグループがあっても影響は受けません。
注意事項 本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。
また、ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○共有プロパティ : プロパティグループの取得(TPSGetPropertyGroup)

形式 クラス名 jp.co.nec.WebOTX.WOPropertyGroupManager
public int TPSGetPropertyGroup(String name, int areatype, WOPropertyGroup[] pgptr)
引数
name - プロパティグループ名を指定します。
area - プロパティグループの範囲を指定します。
WOPropertyGroupManager.WOSP_AREATYPE_HOST
ホスト内でプロパティグループを共有
WOPropertyGroupManager.WOSP_AREATYPE_MONITOR
システム内でプロパティグループを共有
WOPropertyGroupManager.WOSP_AREATYPE_APGROUP
アプリケーショングループ内でプロパティグループを共有
WOPropertyGroupManager.WOSP_AREATYPE_APSERVER
プロセスグループ内でプロパティグループを共有
pgptr - 作成したプロパティグループのオブジェクトを設定します。
返却値
WOPropertyGroupManager.WOSP_RC_DONE
正常終了
WOPropertyGroupManager.WOSP_RC_INVALIDTYPE
areaの指定が不正です
WOPropertyGroupManager.WOSP_RC_INVALIDPOINTER
pgptrの指定が不正です
WOPropertyGroupManager.WOSP_RC_EXCEPTION
内部例外が発生しました
機能 nameとareaで指定したプロパティグループクラスのポインタを返却します。存在しないときはnullポインタを返却します。
注意事項 本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。
また、ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○共有プロパティ : プロパティグループの削除(TPSDeletePropertyGroup)

形式 クラス名 jp.co.nec.WebOTX.WOPropertyGroupManager
public int TPSDeletePropertyGroup(WOPropertyGroup pgptr)
引数 pgptr - プロパティグループクラスオブジェクトを指定します。
返却値
WOPropertyGroupManager.WOSP_RC_DONE
正常終了
WOPropertyGroupManager.WOSP_RC_INVALIDPOINTER
pgptrの指定が不正です
WOPropertyGroupManager.WOSP_RC_EXCEPTION
内部例外が発生しました
機能 pgptrで指定したプロパティグループを削除します。
注意事項 本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。
また、ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○共有プロパティ : プロパティの生成

形式 クラス名 jp.co.nec.WebOTX.WOPropertyGroup
public int CreateProperty(String propname, WOProperty[] pptr );
引数
propname - プロパティ名を指定します。
pptr - 作成したプロパティオブジェクトをindex 0 に設定します。
返却値
WOPropertyGroup.WOSP_RC_DONE
正常終了
WOPropertyGroup.WOSP_RC_INVALIDPOINTER
pptrの指定が不正です
WOPropertyGroup.WOSP_RC_EXCEPTION
内部例外が発生しました
機能 nameで指定したプロパティを生成します。 正常に生成できたときは、プロパティクラス(WOProperty)のオブジェクトをpptr[0]に設定します。 また、既に存在するときは、既存のプロパティオブジェクトをpptr[0]に設定します。 失敗したときはnullをpptr[0]に設定します。
注意事項 本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。
また、ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○共有プロパティ : プロパティの取得

形式 クラス名 jp.co.nec.WebOTX.WOPropertyGroup
public int GetProperty(String propname, WOProperty[] pptr);
引数
name - プロパティ名を指定します。
pptr - 取得したプロパティオブジェクトをindex 0 に設定します。
返却値
WOPropertyGroup.WOSP_RC_DONE
正常終了
WOPropertyGroup.WOSP_RC_INVALIDPOINTER
pptrの指定が不正です
WOPropertyGroup.WOSP_RC_EXCEPTION
内部例外が発生しました
機能 nameで指定したプロパティクラスのオブジェクトを取得します。存在しないときはnullを返却します。
注意事項 本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。
また、ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○共有プロパティ : プロパティの削除

形式 クラス名 jp.co.nec.WebOTX.WOPropertyGroup
public int DeleteProperty(WOProperty pptr);
引数 pptr - 削除するプロパティオブジェクトを指定します。
返却値
WOPropertyGroup.WOSP_RC_DONE
正常終了
WOPropertyGroup.WOSP_RC_INVALIDPOINTER
pptrの指定が不正です
WOPropertyGroup.WOSP_RC_EXCEPTION
内部例外が発生しました
機能 pptrで指定したプロパティクラスのオブジェクトを削除します。
注意事項 本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。
また、ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○共有プロパティ : プロパティグループのロック

形式 クラス名 jp.co.nec.WebOTX.WOPropertyGroup
public int Lock(int inWaitflag, int waitmilsec);
引数
inWaitflag - 待ち合わせタイプを指定します
WOPropertyGroup.WO_PG_WAIT
ロックを待ち合わせ時間だけ待ち合わせます。待ち合わせ時間が過ぎたらWOSP_RC_ALREADYを返します。
WOPropertyGroup.WO_PG_NOWAIT
ロックできないときは即座にWOSP_RC_ALREADYを返します。
waitsmilec - 待ち合わせ時間をミリ秒単位で指定します
返却値
WOPropertyGroup.WOSP_RC_DONE
正常終了
WOPropertyGroup.WOSP_RC_ALREADY
既にロックがかかっています。もしくはロックの待ち合わせ時間が経過しました。
WOPropertyGroup.WOSP_RC_INVALIDTYPE
ロックタイプ、待ち合わせタイプの指定が不正です
WOPropertyGroup.WOSP_RC_DEADLOCK
デッドロックを検出しました(既に自スレッドでロックを取得している場合)
WOPropertyGroup.WOSP_RC_EXCEPTION
内部例外が発生しました
機能 プロパティグループをロックします。これは、プロパティグループを生成するときに指定したareaの範囲内で有効です。
ロックを解放せずにオペレーションを終了(つまりreturn)した場合は、WebOTX側で自動的にロックを解放します。
同一プロパティグループに対してアンロックせずにロックを2回続けて実行した場合はWOSP_RC_DEADLOCKエラーとなります。
注意事項 本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。
また、ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○共有プロパティ : プロパティグループのアンロック

形式 クラス名 jp.co.nec.WebOTX.WOPropertyGroup
public int Unlock();
返却値
WOPropertyGroup.WOSP_RC_DONE
正常終了
WOPropertyGroup.WOSP_RC_NOLOCKED
ロックしていません
WOPropertyGroup.WOSP_RC_EXCEPTION
内部例外が発生しました
機能 プロパティグループをアンロックします。ロックをかけていないときはWOSP_RC_NOLOCKEDを返却します。
注意事項 本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。
また、ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○共有プロパティ : 値の設定

形式 クラス名 jp.co.nec.WebOTX.WOProperty
int Set(boolean value);
int Set(byte value);
int Set(char value);
int Set(short value);
int Set(int value);
int Set(long value);
int Set(float value);
int Set(double value);
int Set(byte[] value);
引数 value - 値を指定します。
返却値
WOPropertyGroup.WOSP_RC_DONE
正常終了
WOPropertyGroup.WOSP_RC_NOLOCKED
ロックしていません
WOPropertyGroup.WOSP_RC_EXCEPTION
内部例外が発生しました
機能 valueで指定した値を設定します。
本APIはロックを取得してから呼び出してください。
注意事項 本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。
また、ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。

○共有プロパティ : 値の取得

形式 クラス名 jp.co.nec.WebOTX.WOProperty
int Get(boolean[] value);
int Get(byte[] value);
int Get(char[] value);
int Get(short[] value);
int Get(int[] value);
int Get(long[] value);
int Get(float[] value);
int Get(double[] value);
引数 value - 値が設定されます。
返却値
WOPropertyGroup.WOSP_RC_DONE
正常終了
WOPropertyGroup.WOSP_RC_NOLOCKED
ロックを取得していない
WOPropertyGroup.WOSP_RC_EXCEPTION
内部例外が発生しました
機能 valueに値を設定します。byte[]だけ配列の大きさが2以上のときは配列の大きさにあわせてデータを取得します。
本APIはロックを取得してから呼び出してください。
注意事項 本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。
また、ファイナライザから本APIを呼び出すことは推奨できません。
ファイナライザはいつ呼び出されるのかがわからないためです。
例えば、WebOTXの終了処理が完了した後にファイナライザが実行されて本APIが呼び出されたり した場合に例外が発生してしまうことなどが考えられます。


○VDサーバにデータを送信 (TPSVDSend)

形式 クラス名 jp.co.nec.WebOTX.orbsvwpr.WoServerWrapper
public static int TPSVDSend(String vdname, String trans_id, String format_id, byte[] data)
引数
vdname - VDサーバ名
trans_id - トランザクションID
format_id - フォーマットID
data - 送信データ
返却値
0が正常終了。0以外が異常終了です。負の値はパラメータミス。正の値はVDサーバ異常をあらわします。もし、普段は正常動作しているのに時々正の値が返ってくる場合は、VDサーバのメッセージブロックを増やしてみてください。
ERROR_VDSEND_NO
正常終了
ERROR_VDSEND_BUFFERISNULL
引数dataがnullである
ERROR_VDSEND_INVALIDSIZE
datasizeに(9999999-28)以上または0以下の値を指定した
ERROR_VDSEND_VDNAMEISNULL
引数vdnameがnullである
ERROR_VDSEND_TRNSIDISNULL
引数trans_idがnullである
ERROR_VDSEND_FORMATIDISNULL
引数format_idがnullである
機能 VDサーバにdataの内容を送信します。trnsiidは8文字、format_idは10文字までが有効です。
本APIを利用する場合、OLF/TP-UTのクライアントアプリケーションが必要であり、それ以外の 目的で使用することはありません。
注意事項 本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。
それ以外の場所では利用できません。
アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。

4.2.2. コールバックオペレーション

○コンポーネント初期化インタフェース

形式 クラス定義
package jp.co.nec.WebOTX;

public interface WOUserComponent
{
    public void init();
}
void init() コンポーネントファイル読み込み時、一度だけ呼び出されます。
WOComponent.add()を呼び出してコンポーネント情報を登録してください。
機能 R5.1からの新機能です。 R4.2まではコンポーネント内の実装クラスはIDLのインタフェース(正確にはリポジトリID)にあわせて固定化していました。 R5.1からは任意の実装クラスを作成できるようになりました。 また、1つのインタフェースから複数の実装も可能になりました。
本インタフェースは、コンポーネント情報をWebOTXに通知するためのコールバックインタフェースです。
運用管理ツールにて本インタフェースを実装したクラスを指定することにより、 サーバプロセス起動時にWebOTXからinit()が呼び出されます。
init()では、WOComponent.add()を呼び出してコンポーネントファイル内に定義されている実装情報を登録してください。


○実装情報の定義

形式 クラス定義
package jp.co.nec.WebOTX;

public interface WOServantCallback
{

    public String _name();

    public String _id();

    public Servant _newInstance();
}
String _name() 実装識別名を返却してください。この値はコンポーネントファイル内でユニークなものにてください。 使える文字列は「英字」と「数字」です。空白や記号、漢字などの2byte文字は使用できません。
String _id() リポジトリIDを返却してください。例えば、interface LoopBackSampleの実装なら"IDL:LoopBackSample:1.0"を返却してください。
Servant _newInstance() サーバントをnewした結果を返却してください。WebOTXが必要に応じて呼び出します。
機能 R5.1からの新機能です。 R4.2まではコンポーネント内の実装クラスはIDLのインタフェース(正確にはリポジトリID)にあわせて固定化していました。 R5.1からは任意の実装クラスを作成できるようになりました。 また、1つのインタフェースから複数の実装も可能になりました。 本インタフェースはその実装クラス情報をWebOTXに通知するためのものです。 実装毎にこのインタフェースを実装したクラスを作成し、WOComponent.add()にて登録してください。


IDL定義にてインタフェースを定義するとき、WO_Baseからの派生と指定し、サーバアプリケーション内で以下のオペレーションを定義することで、特定の事象が発生したときに、WebOTXサーバが定義済みのオペレーションをコールします。

○クライアントへのセッションが切断

形式 public void OnTPSDisconnect()
機能 クライアントアプリケーションがステートフルサーバオブジェクトを生成してから解放するまでの間にクライアントへのセッションが切断されると、WebOTXはこのオペレーションを呼びます。

○オペレーションの異常終了

形式 public void OnTPSAbort(int status)
引数
status - 例外の原因を示す値
03 一般的な例外(メモリアクセス違反やアドレスバス不正など。Java版ではJavaVMの例外かWebOTX内部例外しか有り得ない)
05 オペレーション実行時間の制限を越えた
08 利用者がTPSTxStatus()を呼び出したなど、オペレーションが正常に終了できなかった
31 オペレーション実行の再試行の回数が運用管理ツールで設定した値を超えた
80 利用者がTPSAbort(0)を呼び出したなど、スレッドが終了した
81 利用者がTPSAbort(1)を呼び出したなど、スレッドがリスタートした
82 利用者がTPSAbort(-1)を呼び出したなど、プロセスが終了した(Java版では、何らかのJava例外が発生した場合も含む。)
機能 例外が発生した場合などオペレーション処理中に何らかの異常が発生して正常に終了できなかった場合や、 WebOTXサーバが無限ループを強制的に停止したタイミングでコールされます。
なお、WebOTXはこのオペレーション実行後にロールバック処理を行いますが、 ロールバック後の後処理を実行したい場合には、 このオペレーション内でロールバックを行って、後処理を記述して下さい。


○運用管理コマンドからのメッセージ受信

形式 public void OnTPSMessageNotified(java.lang.String mes)
引数 mes - 運用管理コマンドからのメッセージ
機能 運用管理コマンドからのメッセージを受け取ります。 WebOTX Clusterにおいて、フェイルオーバがあったときに呼び出されます。 WebOTX Clusterを使用していない場合は、本関数はretrun 文のみ記述してください。


以下は特定の条件で呼び出されるコールバック関数およびコールバック関数の登録用APIです。

○プロセス起動および終了時のコールバック関数

形式 クラス定義
package jp.co.nec.WebOTX.Objectcreator;

import org.omg.CORBA.ORB;
import jp.co.nec.WebOTX.WebOTX_Information;
import jp.co.nec.WebOTX.WO_InitTerm;

public class InitTerm implements WO_InitTerm 
{
    public void initialize(ORB orb, WebOTX_Information info) {}
    public void terminate(ORB orb, WebOTX_Information info) {}
}
引数
orb - 運用管理コマンドからのメッセージ
info - WebOTXの情報
機能 WebOTXはプロセス起動時に本クラスのインスタンスを生成し、initialize関数を呼び出します。またプロセス終了時にterminate関数を呼び出します。この呼び出しはそれぞれ1度しか行われません。よって、static変数の初期化などを行う時はここに記述してください。


○オブジェクトの生成/消滅時

形式 インタフェース定義
package jp.co.nec.WebOTX;

public interface WO_ObjectListener
{
    public void OnTPSCreateObject();
    public void OnTPSReleaseObject();
}
機能 WebOTXはOnTPSCreateObject()はサーバオブジェクト生成後に、 OnTPSReleaseObject()はサーバオブジェクト消滅前にそれぞれ呼び出します。


ここでは、単一常駐オブジェクトのコールバックインタフェースについて説明します。

○単一常駐オブジェクト用の生成/解放時のコールバックインタフェース

形式
package jp.co.nec.WebOTX;

public interface WO_PUOObjectListener
{
    public void OnTPSPUOCreateObject();
    public void OnTPSPUOReleaseObject();
}
機能 単一常駐オブジェクト生成時と解放前に特別な処理を入れる時にimplementsしてください。

○単一常駐オブジェクト用のオペレーション呼び出し時のコールバックインタフェース

形式
package jp.co.nec.WebOTX;

public interface WO_PUOOperationListener 
{
   public void OnTPSPUOOperationStart(String intf, String opname);
   public void OnTPSPUOOperationNormal(String intf, String opname);
   public void OnTPSPUOOperationAbnormal(String intf, String opname, int status);
   public void OnTPSPUOOperationAbort(String intf, String opname, int status);
}
引数
intf - インタフェースリポジトリ名 ( 例: IDL:foo:1.0 )
opname - オペレーション名
status
Abnormal時:
TPSSetTxStatus()で設定した値
Abort時 :
例外コード
機能 オペレーションが呼び出された時に、本インタフェースを実装している単一常駐オブジェクトは各サーバオブジェクトの呼び出し(OnTPSOperationStart)、正常終了時(OnTPSPUOOperationNormal)、異常終了時(OnTPSPUOOperationAbnormal)、例外時(OnTPSPUOOperationAbort)にそれぞれ呼び出されます。


ここでは、複数常駐オブジェクトのコールバックインタフェースについて説明します。

○複数常駐オブジェクト用の生成/解放時のコールバックインタフェース

形式
package jp.co.nec.WebOTX;

public interface WO_PUOObjectListenerForPlural
{
    public void OnTPSPUOCreateObject(String ident);
    public void OnTPSPUOReleaseObject(String ident);
}
引数 ident - 常駐オブジェクト識別子
機能 複数常駐オブジェクト生成時と解放前に特別な処理を入れる時にimplementsしてください。

○複数常駐オブジェクト用のオペレーション呼び出し時のコールバックインタフェース

形式
package jp.co.nec.WebOTX;

public interface WO_PUOOperationListenerForPlural 
{
   public void OnTPSPUOOperationStart(String ident, String intf, String opname);
   public void OnTPSPUOOperationNormal(String ident, String intf, String opname);
   public void OnTPSPUOOperationAbnormal(String ident, String intf, String opname, int status);
   public void OnTPSPUOOperationAbort(String ident, String intf, String opname, int status);
}
引数
ident - 常駐オブジェクト識別子
intf - インタフェースリポジトリ名 ( 例: IDL:foo:1.0 )
opname - オペレーション名
status
Abnormal時:
TPSSetTxStatus()で設定した値
Abort時 :
例外コード
機能 オペレーションが呼び出された時に、本インタフェースを実装している複数常駐オブジェクトは各サーバオブジェクトの呼び出し(OnTPSOperationStart)、正常終了時(OnTPSPUOOperationNormal)、異常終了時(OnTPSPUOOperationAbnormal)、例外時(OnTPSPUOOperationAbort)にそれぞれ呼び出されます。

4.2.3. クライアント管理ライブラリAPI


○クライアント管理ライブラリの初期化

形式 クラス名:jp.co.nec.WebOTX.TerminalManager
public int SetFactoryObject(org.omg.CORBA.ORB orb, org.omg.CORBA.Object fObj);
引数
orb - ORBオブジェクト
fobj - ファクトリオブジェクトリファレンス
戻り値
正常終了時は0が返ります。異常終了したときは負の値が返ります。
TerminalManager.WOTM_SIMURATION_MODE 2
サーバシミュレータを使用中
TerminalManager.WOTM_ALREADY_RUNNING 1
既に登録済み
TerminalManager.WOTM_BASEFACTORY_IS_NIL -1
Requestオブジェクトの生成が出来なかった。返却値の型を設定できない
TerminalManager.WOTM_EXCEPTION_GETID -2
GetID()で例外発生
TerminalManager.WOTM_NOT_DEFINE_ASYNCSERVICE -3
サーバ側で非同期メッセージ用のポートが設定されていない
TerminalManager.WOTM_NOT_CREATE_ASYNCWAIT_THREAD -4
非同期メッセージ送受信用スレッドの作成に失敗
機能 クライアント管理ライブラリを初期化します。 このメソッドを呼び出すことにより、クライアント管理が開始されます。このとき、コンソールタイプのJavaアプリケーションを使用するときは、次に示すSetMessageType(TerminalManager.TM_MESSAGE_SYSTEMOUT)を必ず実行してください。

○メッセージタイプの設定

形式 クラス名:jp.co.nec.WebOTX.TerminalManager
public void SetMessageType(int type);
引数
type - 非同期メッセージ受信後の処理を指定します。
TerminalManager.TM_MESSAGE_SYSTEMOUT
非同期メッセージを標準出力に出力します。
TerminalManager.TM_MESSAGE_DIALOG
非同期メッセージをメッセージダイアログに表示します。
機能 非同期メッセージを受信したときに、どこに表示するかを指定します。コンソールタイプのJavaアプリケーションの場合は必ず本関数をSetFactoryObject()以降にTerminalManager.TM_MESSAGE_SYSTEMOUTを引数に実行してください。SetMessageTypeとSetMessageHookを一度も呼ばない、またはTerminalManager.TM_MESSAGE_DIALOGを指定すると、非同期メッセージ受信時にメッセージダイアログを表示して通知します。

○コールバックオブジェクトの設定

形式 クラス名:jp.co.nec.WebOTX.TerminalManager
public void SetMessageHook(jp.co.nec.WebOTX.TerminalMessageHook hook);
引数 hook - jp.co.nec.WebOTX.TerminalMessageHookインタフェースをimplementsしたオブジェクトを指定
機能 非同期メッセージを受信したときに、hookに指定したオブジェクトのmessage(String message)メソッドを呼び出します。 このメソッドを呼び出すとSetMessageType()の指定は無効になります。

○クライアント管理ライブラリの終了

形式 クラス名:jp.co.nec.WebOTX.TerminalManager
public void Term();
機能 クライアント管理ライブラリの機能を停止します。本関数を呼び出さないと最悪プロセスが停止しませんので、必ず呼び出すようにしてください。