WebOTX Manual V11.1 (第6版) 目次を表示 |
WebOTXには、いくつかのAPIが用意されています。 これらを使用することにより、アプリケーションを効率よく、かつ安全に実行することができます。
オープン性の高いアプリケーションを作成する場合は、これらのAPIを使用すべきではありません。 しかし、WebOTXの高機能/高信頼の恩恵を受けるためには、 これらのAPIの利用は不可欠なものとなります。
サーバAPI○コンポーネント情報の登録 (add)
形式 |
#include "wotxexps.h" static void WebOTX::WOComponent::add(WebOTX::WOServantCallback* woservantcallback); |
引数 | woservantcallback - 実装情報 |
機能 |
コンポーネント初期化関数(運用管理ツールで指定するコンポーネント初期化関数)にて、
コンポーネント内に定義されている実装情報をWebOTXにするために使用します。
引数 woservantcallback は実装情報のインスタンスを指定します。
複数の実装を定義している場合は、その数だけ呼び出してください。 インスタンスの解放責任はWebOTXにあります。 |
注意事項 | 本APIはコンポーネント初期化関数でのみ利用するようにしてください。 それ以外の場所から呼び出しても何も起こりません。 |
○サーバオブジェクトの生成 (CreateServant)
形式 |
#include "wotxexps.h" static CORBA::Object_ptr WebOTX::WOServantManager::CreateServant(WebOTX::WOServantCallback* woservantcallback); |
引数 | woservantcallback - 実装情報 |
機能 |
WebOTXに、サーバオブジェクトの生成を通知します。
引数 woservantcallback は生成する実装情報のインスタンスを指定します。
指定された実装情報に対応するオブジェクトがステートレスだった場合は、
事前生成されているオブジェクトが返ります。ステートフルだった場合は、
新しくオブジェクトを生成されて、そのオブジェクトリファレンスが返ります。 インスタンスの解放責任は本関数の呼び出し側にあります。 |
注意事項 |
本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 |
○サーバオブジェクトの解放 (ReleaseServant)
形式 |
#include "wotxexps.h" static void WebOTX::WOServantManager::ReleaseServant(WebOTX::WOServantCallback* woservantcallback, CORBA::Object_ptr objref); |
引数 |
woservantcallback - 実装情報 objref - オブジェクトリファレンス |
機能 |
WebOTXに、サーバオブジェクトの解放を通知します。
引数 woservantcallback は解放する実装情報のインスタンスを指定します。
複数の実装を定義している場合は、その数だけ呼び出してください。 インスタンスの解放責任は本関数の呼び出し側にあります。 |
注意事項 |
本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 |
○トランザクション終了状態の通知 (TPSSetTxStatus)
形式 |
#include "wotxexps.h" void TPSSetTxStatus(long status); |
引数 |
|
機能 | 以後のオペレーション実行要求を制御することが可能です。 |
注意事項 |
本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 |
○データベースオブジェクトの登録 (TPSRegisterDB)
形式 |
#include "wotxexps.h" int TPSRegisterDB(WebOTX_DB* regdb); |
引数 | regdb - WebOTX_DBクラスから派生したオブジェクトポインタ |
返却値 |
|
機能 | サーバオブジェクト内で使用するリモートデータオブジェクトをWebOTXサーバへ登録します。 登録するオブジェクトはWebOTX提供のWebOTX_DBクラスから派生したクラスのオブジェクトです。 例外発生時には、このオブジェクトのrollbackメソッドが呼び出されます。 rollback()メソッドは純仮想関数になっていますので、 派生したクラスでオーバライドしてロールバック処理を記述してください。 WebOTX_DBクラスを派生していないオブジェクトや不正なアドレスを渡した時の動作は保証できません。 |
注意事項 |
本APIは、サーバオブジェクトのコンストラクタまたはオペレーション処理中でのみ利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 |
○スレッド、プロセスの強制終了、スレッドのリスタート (TPSAbort)
形式 |
#include "wotxexps.h" void TPSAbort(long aborttype); |
引数 |
|
機能 | 利用者の処理中にスレッドやプロセスを終了したり、スレッドをリスタートしたりすることが可能です。 |
注意事項 |
本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 |
○オペレーションのリスタート (TPSRestart)
形式 |
#include "wotxexps.h" void TPSRestart(void) |
機能 | 利用者の処理を中断し、オペレーションを最初から実行し直します。 |
注意事項 |
本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 |
○利用者のトレース出力 (TPSUserTrace)
形式 |
#include "wotxexps.h" void TPSUserTrace(long level, const char* msg); |
引数 |
|
機能 |
利用者のトレースをWebOTXのトレースレベルにあわせて出力します。出力されるファイルは、運用管理ツールで指定します。 トレースレベル2以下の場合、エラーメッセージがsyslogやイベントログに出力されるため、WebOTXの性能が劣化する可能性があります。 エラー発生時以外はトレースレベル2以下を指定しないでください。 |
注意事項 | 本APIは、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からは利用できません。 |
○現在のトレースレベルの取得 (TPSGetUserTraceLevel)
形式 |
#include "wotxexps.h" long TPSGetUserTraceLevel(void); |
返却値 | 現在のトレースレベル |
機能 | 運用管理ツールで指定しているトレースレベルを取得します。トレースファイルに出力するメッセージを組み立てるかどうかを決めるために使用してください。 |
注意事項 | 本APIは、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からは利用できません。 |
○イベントジャーナルへの出力 (TPSEventJournal)
形式 |
#include "wotxexps.h" long TPSEventJournal(short ejkind, const char* msg); |
引数 |
|
返却値 |
0は正常終了。異常時には負の値を返します。 -1 内部エラー -2 パラメータ不正 |
機能 |
引数 ejkind のジャーナル種別で引数msgをイベントジャーナルに出力します。
コンポーネント名はUSERとなります。また、msgは16進数で出力します。 イベントジャーナルに関しては [ 構築・運用 > ドメインの構築 > TPシステム > 通信情報(イベントジャーナル) ] をご覧ください。 |
注意事項 | 本APIは、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からは利用できません。 |
○論理クライアントIDの取得 (TPSGetLid)
形式 |
#include "wotxexps.h" void TPSGetLid(char** lid) |
引数 | lid - 論理クライアントID領域へのポインタを格納 |
機能 | オペレーションの発行元を示す論理クライアントIDを返却します。 論理クライアントIDの終端はNULL文字('\0')です。 |
注意事項 |
本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。 しかし、ステートフルサーバオブジェクトに限っては、コンストラクタでも利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 |
○クライアントのIPアドレスの取得 (TPSGetTerminalIP)
形式 |
#include "wotxexps.h" int TPSGetTerminalIP(char** ipaddr) |
引数 | ipaddr - IPアドレスを10進数ドット表記文字列で返却する。格納領域は関数内部で確保します。解放責任は呼び出し側とします。 |
返却値 |
|
機能 | 実行中のメソッドを呼び出しているクライアントのIPアドレスを10進数のドット区切り文字列で格納し、その格納領域を返却します。 文字列の領域はAPI内部で確保します。よって、この領域の解放責任は本関数の呼び出し側にありますので注意してください。 |
注意事項 |
本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。 しかし、ステートフルサーバオブジェクトに限っては、コンストラクタでも利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 IPv6のIPアドレスは取得できません。この場合「255.255.255.255」が取得されます。 |
○プログラム引数の数を取得 (TPSGetArgumentCount)
形式 |
#include "wotxexps.h" long TPSGetArgumentCount (); |
返却値 | 引数の数 |
機能 | 運用管理ツールで指定したプログラム引数の個数を返却します。 |
注意事項 | 本APIは、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からは利用できません。 |
○プログラム引数の値を取得 (TPSGetArgumentValue)
形式 |
#include "wotxexps.h" char** TPSGetArgumentValue (); |
返却値 | 引数配列へのポインタ |
機能 | 運用管理ツールで指定したプログラム引数配列へのポインタを返却します。 配列の大きさはTPSGetArgumentCount()で取得してださい。 |
注意事項 | 本APIは、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からは利用できません。 |
○WebOTX情報の取得(TPSGetServerInformation)
形式 |
#include "wotxexps.h" long TPSGetServerInformation(WebOTX_Information* info); typedef struct WebOTX_Information { // アプリケーショングループ名 const char *apGroupName; // プロセスグループ名 const char *apServerName; // ステートフルかステートレスか #define WOINFO_STATELESS 0 #define WOINFO_STATEFULL 1 int state; // スレッドモデル #define WOINFO_THREAD_NONE 0 #define WOINFO_THREAD_SINGLE 1 #define WOINFO_THREAD_APARTMENT 2 #define WOINFO_THREAD_FREE 3 int threadModel; // IIOPリスナポート番号 int iiopPort; // クライアント管理ライブラリポート int asyncPort; // 単一常駐オブジェクトクラス名 const char* precteatedClassName; // OTS連携を行うか (0:しない、0以外:する) int isOTS; // システムID int systemID; // 接続サーバ名 const char* serverName; // 名前サーバ名 const char* nameServer; // Watchサーバを使用するか(0:しない、0以外:する) int isWatchServer; // 名前サーバに登録するリファレンスの数(多重度) int multiplexDegree; // ファクトリを使うかどうか(0:使用しない, 0以外:使用する) int isFactory; // Oracle連携するかどうか(0:使用しない, 0以外:使用する) // // 1999/12/02 Oracle連係情報を追加 // int isOracle; // Oracle連携する時、SQL/Netを使用するか // (0:使用しない, 0以外:使用する) // Oracle連携しない時は-1 int isSQLNet; // Oracle連携する時のSID名(未使用時はNULL) const char* oracleSID; // Oracle連携する時のユーザ名とパスワード(未使用時はNULL) // SQL/Net使用時 : user@SID/passwd // SQL/Net未使用時: user/passwd const char* oracleUserPasswd; // Information Version #define VERSION_1999_09 int version; // RFU char rfu[124]; } WebOTX_Information; |
引数 | info - WebOTX_Informationのポインタ。領域は利用者が確保してください。 |
返却値 | 現在は0のみです。 |
機能 | 現在のプロセスに設定されているWebOTXの各種設定をinfoに設定します。 WebOTX 6.xではversionおよびrfuの値は不定です。 |
注意事項 | 本APIは、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からは利用できません。 |
○非同期トランザクションの結果を取得(TPSGetAsyncVDSendResult)
形式 |
#include "wotxexps.h" CORBA::Long TPSGetAsyncVDSendResult(); |
返却値 |
非同期トランザクション呼び出しを行った時の返却値。
|
機能 | 非同期トランザクション呼び出しを行った時の結果を取得します。 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「非同期トランザクションについて」をご覧ください。 |
注意事項 |
本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 |
○ORBの取得 (TPSGetORB)
形式 |
#include "wotxexps.h" long TPSGetORB (CORBA::ORB_ptr& orb); |
引数 | orb - ORBへのポインタを設定 |
返却値 | 0のみです。 |
機能 | WebOTXサーバがアプリケーション起動時に作成した、ORBポインタを取得します。 サーバアプリケーション内でCORBAのサービスを利用したいときに取得してください。 |
注意事項 | 本APIは、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からは利用できません。 |
○POAの取得 (TPSGetMyPOA)
形式 |
#include "wotxexps.h" long TPSGetMyPOA (PortableServer::POA_ptr& poa); |
引数 | poa - POAへのポインタを設定 |
返却値 | 0のみです。 |
機能 | WebOTXサーバが作成したPOAを取得します。 WebOTXはインタフェース毎にPOAを作成します。 そのポリシーはステートによって異なります。 |
注意事項 | 本APIは、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からは利用できません。 |
○初期リファレンスの取得 (TPSGetInitialReference)
形式 |
#include "wotxexps.h" long TPSGetInitialReference (const char* service, CORBA::Object_ptr& initref); |
引数 |
|
返却値 |
0 正常終了した -1 初期リファレンスの取得に失敗した |
機能 | 引数serviceで指定した初期リファレンスを引数initrefに設定します。 解放責任は本関数の呼び出し側にあるので、CORBA::release(initref) を忘れないでください。 |
注意事項 | 本APIは、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からは利用できません。 |
○単一常駐オブジェクトの取得 (TPSGetPrecreatedUsersObject)
形式 |
#include "wotxexps.h" void TPSGetPrecreatedUsersObject(void** preobj); |
引数 | preobj - 常駐オブジェクトのポインタを返却します。 |
機能 |
WebOTXサーバがアプリケーション起動時に作成した、単一常駐オブジェクトを取得します。指定が無かったり、オブジェクトの生成に失敗している時はnullオブジェクトを返却します。 各常駐オブジェクトは1スレッドに1つ作成します。 |
注意事項 |
本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 |
○複数常駐オブジェクトの取得 (TPSGetPrecreatedUsersObjectForPlural)
形式 |
#include "wotxexps.h" long TPSGetPrecreatedUsersObjectForPlural(const char* ID, void** preobj); |
引数 |
|
返却値 |
|
機能 |
WebOTXサーバがアプリケーション起動時に作成した、複数常駐オブジェクトを取得します。取得するオブジェクトは引数 ID
で指定します。 各常駐オブジェクトは1スレッドに1つ作成します。 |
注意事項 |
本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 |
○共有プロパティ : プロパティグループの生成(TPSCreatePropertyGroup)
形式 |
#include "wotxexps.h" long TPSCreatePropertyGroup(const char* name, long area, WOPropertyGroup** pgptr); |
引数 |
|
返却値 |
|
機能 |
nameで指定したプロパティグループを生成します。 正常に生成できたときは、プロパティグループクラス(WOPropertyGroup)のポインタをpgptrに設定します。
また、既に存在するときは、既存のプロパティグループポインタを設定します。 失敗したときはNULLポインタを設定します。 areaはプロパティグループの有効範囲を指定します。 異なるareaに同一名のプロパティグループがあっても影響は受けません。 |
注意事項 |
本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。 また、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からも利用できません。 |
○共有プロパティ : プロパティグループの取得(TPSGetPropertyGroup)
形式 |
#include "wotxexps.h" long TPSGetPropertyGroup (const char* name, long area, WOPropertyGroup** pgptr); |
引数 |
|
返却値 |
|
機能 | nameとareaで指定したプロパティグループクラスのポインタを返却します。存在しないときはNULLポインタを返却します。 |
注意事項 |
本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。 また、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からも利用できません。 |
○共有プロパティ : プロパティグループの削除(TPSDeletePropertyGroup)
形式 |
#include "wotxexps.h" long TPSDeletePropertyGroup (WOPropertyGroup* pgptr); |
引数 | pgptr - プロパティグループクラスのポインタを指定します。 |
返却値 |
|
機能 | pgptrで指定したプロパティグループを削除します。 |
注意事項 |
本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。 また、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からも利用できません。 |
○共有プロパティ : プロパティの生成
形式 |
#include "wotxexps.h" long WOPropertyGroup::CreateProperty(const char* name, WOProperty** pptr ); |
引数 |
|
返却値 |
|
機能 | nameで指定したプロパティを生成します。 正常に生成できたときは、プロパティクラス(WOProperty)のポインタを返却します。 また、既に存在するときは、既存のプロパティポインタを返却します。 失敗したときはNULLポインタを返却します。 |
注意事項 |
本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。 また、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からも利用できません。 |
○共有プロパティ : プロパティの取得
形式 |
#include "wotxexps.h" long WOPropertyGroup::GetProperty(const char* name, WOProperty** pptr); |
引数 |
|
返却値 |
|
機能 | nameで指定したプロパティクラスのポインタを返却します。そのプロセスで一度も生成していないときはNULLポインタを返却します。 |
注意事項 |
本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。 また、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からも利用できません。 |
○共有プロパティ : プロパティの削除
形式 |
#include "wotxexps.h" long WOPropertyGroup::DeleteProperty(WOProperty* pptr); |
引数 | pptr - プロパティクラスのポインタを指定します。 |
返却値 |
|
機能 | pptrで指定したプロパティを削除します。 |
注意事項 |
本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。 また、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からも利用できません。 |
○共有プロパティ : プロパティグループのロック
形式 |
#include "wotxexps.h" long WOPropertyGroup::Lock(WO_PG_WAITFLAG inWaitflag, unsigned long waitmilsec); |
引数 |
|
返却値 |
|
機能 |
プロパティグループをロックします。これは、プロパティグループを生成するときに指定したareaの範囲内で有効です。 ロックを解放せずにオペレーションを終了(つまりreturn)した場合は、WebOTX側で自動的にロックを解放します。 同一プロパティグループに対してアンロックせずにロックを2回続けて実行した場合はWOSP_RC_DEADLOCKエラーとなります。 |
注意事項 |
本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。 また、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からも利用できません。 |
○共有プロパティ : プロパティグループのアンロック
形式 |
#include "wotxexps.h" long WOPropertyGroup::Unlock(); |
返却値 |
|
機能 | プロパティグループをアンロックします。ロックをかけていないときはWOSP_RC_NOLOCKEDを返却します。 |
注意事項 |
本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。 また、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からも利用できません。 |
○共有プロパティ : 値の設定
形式 |
#include "wotxexps.h" long WOProperty::Set(int value); long WOProperty::Set(short value); long WOProperty::Set(long value); long WOProperty::Set(unsigned short value); long WOProperty::Set(unsigned long value); long WOProperty::Set(float value); long WOProperty::Set(double value); long WOProperty::Set(unsigned char value); long WOProperty::Set(char value); long WOProperty::Set(bool value); (Windowsのみ) long WOProperty::Set(const char* ptr, int size); |
引数 |
|
返却値 |
|
機能 |
valueやptr,sizeで指定した値を設定します。 本APIはロックを取得してから呼び出してください。 |
注意事項 |
本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。 また、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からも利用できません。 |
○共有プロパティ : 値の取得
形式 |
#include "wotxexps.h" long WOProperty::Get(int& value); long WOProperty::Get(short& value); long WOProperty::Get(long& value); long WOProperty::Get(unsigned short& value); long WOProperty::Get(unsigned long& value); long WOProperty::Get(float& value); long WOProperty::Get(double& value); long WOProperty::Get(char& value); long WOProperty::Get(unsigned char& value); long WOProperty::Get(bool& value); (Windowsのみ) long WOProperty::Get(char*& ptr, int size); |
引数 | valueは値が設定されます。 ptrは データを格納する領域のポインタを指定します。これは利用者がメモリの確保を行ってください。 sizeはptrが示す領域の大きさを指定します。 |
返却値 |
|
機能 |
valueやsize,ptrに値を設定します。 本APIはロックを取得してから呼び出してください。 |
注意事項 |
本APIは、アプリケーションが独自に生成したスレッドの処理中では利用できません。 また、WindowsのDllMain、UNIXの共有ライブラリのイニシャライザ・ターミネータ(init, finiなど) からも利用できません。 |
○VDサーバにデータを送信 (TPSVDSend)
形式 |
#include "wotxexps.h" long TPSVDSend(const char* vdname, const char* trans_id, const char* format_id, void* data, long datasize) |
引数 |
|
返却値 |
|
機能 | VDサーバにdataの内容を送信します。trnsiidは8文字、format_idは10文字までが有効です。本APIを利用する場合、OLF/TP-UTのクライアントアプリケーションが必要になります。 それ以外では使用しません。 |
注意事項 |
本APIは、サーバオブジェクトのオペレーション処理中でのみ利用できます。 それ以外の場所では利用できません。 アプリケーションが独自に生成したスレッドの処理中などでも利用できないので注意してください。 |
○コンポーネント初期化関数
形式 | extern "C" WO_USER_EXPORT void <任意の関数名>() |
機能 |
R5.1からの新機能です。
R4.2まではコンポーネント内の実装クラスはIDLのインタフェース(正確にはリポジトリID)にあわせて固定化していました。
R5.1からは任意の実装クラスを作成できるようになりました。
また、1つのインタフェースから複数の実装も可能になりました。 本インタフェースは、コンポーネント情報をWebOTXに通知するためのコールバックインタフェースです。 運用管理ツールにて本関数名を指定することにより、サーバプロセス起動時にWebOTXから呼び出されます。 本関数でWOComponent.add()を呼び出してコンポーネントファイル内に定義されている実装情報を登録してください。 |
○実装情報の定義
形式 |
#include "wotxexps.h" namespace WebOTX { class WOServantCallback { virtual const char* _name() = 0; virtual const char* _id() = 0; virtual PortableServer::Servant _newInstance() = 0; virtual void _deleteInstance(PortableServer::Servant servant) = 0; } |
メソッド |
const char* _name() 実装識別名を返却してください。この値はコンポーネントファイル内でユニークなものにてください。 使える文字列は「英字」と「数字」です。空白や記号、漢字などの2byte文字は使用できません。 解放責任はWOServantCallbackの実装クラスにあります。 const char* _id() リポジトリIDを返却してください。 例えばinterface LoopBackSampleの実装なら"IDL:LoopBackSample:1.0"を返却してください。 解放責任はWOServantCallbackの実装クラスにあります。 PortableServer::Servant _newInstance() サーバントをnewした結果を返却してください。WebOTXが必要に応じて呼び出します。 解放責任はWOServantCallbackの実装クラスにありますが、 基本的にWebOTXが必要に応じて下記の_deleteInstance()を呼び出します。 void _deleteInstance(PortableServer::Servant servant) 引数 servantをdeleteしてください。 |
機能 | R5.1からの新機能です。 R4.2まではコンポーネント内の実装クラスはIDLのインタフェース(正確にはリポジトリID)にあわせて固定化していました。 R5.1からは任意の実装クラスを作成できるようになりました。 また、1つのインタフェースから複数の実装も可能になりました。 本インタフェースその実装クラス情報をWebOTXに通知するためのものです。 実装毎にこのインタフェースを実装したクラスを作成し、WOComponent.add()にて登録してください。 |
IDL定義にてインタフェースを定義するときにWO_Baseからの派生と指定して、サーバアプリケーション内で以下のオペレーションを定義しておけば、特定の事象が発生したときに、WebOTXサーバが定義済みのオペレーションをコールします。
○クライアントへのセッションが切断
形式 |
#include "wotxexps.h" public void OnTPSDisconnect(CORBA::Environment& _env = Ob_default_environment()) |
機能 | クライアントアプリケーションがステートフルサーバオブジェクトを生成してから解放するまでの間にクライアントへのセッションが切断されると、WebOTXはこのオペレーションを呼びます。 |
○オペレーションの異常終了
形式 |
#include "wotxexps.h" public void OnTPSAbort(CORBA::Long status, CORBA::Environment& _env = Ob_default_environment()) |
引数 |
|
機能 |
例外が発生した場合などオペレーション処理中に何らかの異常が発生して正常に終了できなかった場合や、
WebOTXサーバが無限ループを強制的に停止したタイミングでコールされます。 なお、WebOTXは、このオペレーション実行後にロールバック処理を行いますが、 ロールバック後の後処理を実行したい場合には、 このオペレーション内でロールバックを行って後処理を記述してください。 |
○運用管理コマンドからのメッセージ受信
形式 |
#include "wotxexps.h" public void OnTPSMessageNotified(const char* mes CORBA::Environment& _env = Ob_default_environment()) |
引数 | mes - 運用管理コマンドからのメッセージ |
機能 | 運用管理コマンドからのメッセージを受け取ります。 WebOTX クラスタ環境において、フェイルオーバがあったときに呼び出されます。 WebOTX クラスタを使用していない場合は、本関数はretrun 文のみ記述してください。 |
以下は特定の条件で呼び出されるコールバック関数およびコールバック関数の登録用APIです。
○サーバコンポーネント(DLLやSLやSOなど)の読み込み後のコールバック関数
形式 | extern "C" WO_USER_EXPORT int WebOTX_Init() |
返却値 |
0 正常終了 1 異常終了 |
機能 | WebOTXはサーバコンポーネント(WindowsNTではDLL、HP-UXではSL、SolarisではSO)を読み込んだ後に本関数を呼び出します。この呼び出しは1度しか行われません。よって、大域変数の初期化などを行う時はここに記述してください。 |
備考 | WebOTXのIDLコンパイラを実行した時、<IDLファイル名>_Entry.C(WindowsNTではcpp)ファイルに自動的に生成します。 |
○サーバコンポーネント(DLLやSLやSOなど)の解放直前のコールバック関数
形式 | extern "C" WO_USER_EXPORT void WebOTX_Term() |
機能 | WebOTXはサーバコンポーネント(WindowsNTではDLL、HP-UXではSL、SolarisではSO)を解放する直前に本関数を呼び出します。この呼び出しは1度しか行われません。WebOTX_Initで初期化した変数などの解放処理をここに記述してください。 |
備考 | WebOTXのIDLコンパイラを実行した時、<IDLファイル名>_Entry.C(WindowsNTではcpp)ファイルに自動的に生成します。 |
以下は単一常駐オブジェクトのコールバック関数定義です。
○単一常駐オブジェクトポインタ生成用関数
形式 | extern "C" DLLEXPORT void* OnTPSPrecreatedUsersObject () |
返却値 | 単一常駐オブジェクトポインタ |
機能 | 単一常駐オブジェクトを生成し、そのポインタを返却します。スレッドの初期化時に呼び出されます。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
○単一常駐オブジェクトポインタ解放用関数
形式 | extern "C" DLLEXPORT void OnTPSReleasePrecreatedUsersObject (void* preobj) |
引数 | preobj - 常駐オブジェクトポインタ |
機能 | 引数 preobj にOnTPSReleasePrecreatedUsersObject()で生成した常駐オブジェクトポインタが渡されるので解放してください。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
○オペレーションの開始時の単一常駐オブジェクト呼び出し(オプション)
形式 |
extern "C"DLLEXPORT void OnTPSOperationStart ( void * preobj, const char* intf, const char* op ) |
引数 |
|
機能 | オペレーションの開始時に、上記関数を呼び出します。オペレーションの情報は、引数 intfと引数 op に設定されます。なお、この関数はオプションになっていますので、無ければ呼び出しません(エラーにもなりません)。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
○オペレーションの正常終了時の単一常駐オブジェクト呼び出し(オプション)
形式 |
extern "C"DLLEXPORT void OnTPSOperationNormal ( void * preobj, const char* intf, const char* op ) |
引数 |
|
機能 |
オペレーションの正常終了時に、上記関数を呼び出します。オペレーションの情報は、引数 intfと引数 op に設定されます。 なお、この関数はオプションになっていますので、無ければ呼び出しません(エラーにもなりません)。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
○オペレーションの異常終了時の単一常駐オブジェクト呼び出し(オプション)
形式 |
extern "C"DLLEXPORT void OnTPSOperationAbnormal ( void * preobj, const char* intf, const char* op, int status ) |
引数 |
|
機能 |
オペレーションの異常終了時に、上記関数を呼び出します。異常終了とは、TPSSetTxStatus()で0以外の値を設定した時です。オペレーションの情報は、引数
intfと引数 op に設定されます。引数 status にはTPSSetTxStatus() で設定した値を渡します。 なお、この関数はオプションになっていますので、無ければ呼び出しません(エラーにもなりません)。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
○オペレーションのアボート終了時の単一常駐オブジェクト呼び出し(オプション)
形式 |
extern "C"DLLEXPORT void OnTPSOperationAbort ( void * preobj, const char* intf, const char* op, int status ) |
引数 |
|
機能 |
オペレーションのアボート終了時に、上記関数を呼び出します。アボートとは、不正アドレス参照やsignal発生時です。オペレーションの情報は、引数
intfと引数 op に設定されます。引数 status にはアボート内容を示すコードが入っています。例外コード関しては OnTPSAbort()
を参照してください。 なお、この関数はオプションになっていますので、無ければ呼び出しません(エラーにもなりません)。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
以下は複数常駐オブジェクトのコールバック関数定義です。
○複数常駐オブジェクトポインタ生成用関数
形式 |
extern "C" DLLEXPORT void* OnTPSPrecreatedUsersObjectForPlural ( const char* ident ) |
引数 | ident - 常駐オブジェクト識別子 |
返却値 | 複数常駐オブジェクトポインタ |
機能 | 複数常駐オブジェクトを生成し、そのポインタを返却します。スレッドの初期化時に呼び出されます。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
○複数常駐オブジェクトポインタ解放用関数
形式 |
extern "C" DLLEXPORT void OnTPSReleasePrecreatedUsersObjectForPlural( void* preobj, const char* ident ) |
引数 |
|
機能 | 引数 preobj にOnTPSPrecreatedUsersObjectForPlural()で生成した常駐オブジェクトポインタが渡されるので解放してください。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
○オペレーションの開始時の複数常駐オブジェクト呼び出し(オプション)
形式 |
extern "C"DLLEXPORT void OnTPSOperationStartForPlural ( void * preobj, const char* ident, const char* intf, const char* op ) |
引数 |
|
機能 | オペレーションの開始時に、上記関数を呼び出します。オペレーションの情報は、引数 intfと引数 op に設定されます。なお、この関数はオプションになっていますので、無ければ呼び出しません(エラーにもなりません)。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
○オペレーションの正常終了時の複数常駐オブジェクト呼び出し(オプション)
形式 |
extern "C"DLLEXPORT void OnTPSOperationNormalForPlural( void * preobj, const char* ident, const char* intf, const char* op ) |
引数 |
|
機能 |
オペレーションの正常終了時に、上記関数を呼び出します。オペレーションの情報は、引数 intfと引数 op に設定されます。 なお、この関数はオプションになっていますので、無ければ呼び出しません(エラーにもなりません)。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
○オペレーションの異常終了時の複数常駐オブジェクト呼び出し(オプション)
形式 |
extern "C"DLLEXPORT void OnTPSOperationAbnormalForPlural( void * preobj, const char* ident, const char* intf, const char* op, int status ) |
引数 |
|
機能 |
オペレーションの異常終了時に、上記関数を呼び出します。異常終了とは、TPSSetTxStatus()で0以外の値を設定した時です。オペレーションの情報は、引数
intfと引数 op に設定されます。引数 status にはTPSSetTxStatus() で設定した値を渡します。 なお、この関数はオプションになっていますので、無ければ呼び出しません(エラーにもなりません)。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
○オペレーションのアボート終了時の複数常駐オブジェクト呼び出し(オプション)
形式 |
extern "C"DLLEXPORT void OnTPSOperationAbortForPlural( void * preobj, const char* ident, const char* intf, const char* op, int status ) |
引数 |
|
機能 |
オペレーションのアボート終了時に、上記関数を呼び出します。アボートとは、不正アドレス参照やsignal発生時です。オペレーションの情報は、引数
intfと引数 op に設定されます。引数 status にはアボート内容を示すコードが入っています。例外コード関しては OnTPSAbort()
を参照してください。 なお、この関数はオプションになっていますので、無ければ呼び出しません(エラーにもなりません)。 |
備考 | 詳しくは「C++言語を用いたサーバアプリケーションの作成」-「常駐オブジェクトの使い方」を参照してください。 |
○クライアント管理ライブラリにファクトリオブジェクトの設定
形式 |
#include "WOTrmMan.h" int WO_TerminalManager::SetFactoryObject (CORBA::Object_ptr fobj) |
引数 | fobj - ファクトリオブジェクトリファレンス |
戻り値 |
|
機能 | クライアント管理ライブラリにファクトリオブジェクトを設定します。このメソッドを呼び出すことにより、クライアント管理が開始されます。 |
○ウィンドウメッセージの設定
形式 |
#include "WOTrmMan.h" void WO_TerminalManager::SetAsyncWindowHandle( HANDLE hAsyncHandle, UINT nMessageID); |
機能 | 非同期メッセージを受信したときに、hAsyncHandleに示されたウィンドウハンドルに対して、nMessageIDのメッセージを送信します。電文の内容はGetLastMessage()で取得してください。SetAsyncWindowHandleを一度も呼ばない、またはhAsyncHandleにNULLを指定すると、非同期メッセージ受信時にメッセージダイアログを表示して通知します。 |
○最後の非同期メッセージを取得する
形式 |
#include "WOTrmMan.h" int WO_TerminalManager:: GetLastMessage(char* buf, int len); |
戻り値 | 取得した非同期メッセージのサイズを返却 |
機能 | 最後の非同期メッセージをbufに格納します。lenはbufのサイズを指定してください。 |