クラス TP1Client
public final class TP1Client extends java.lang.Object
TP1/Serverのサーバに対してサービス要求を行うクラスです。
関連項目
フィールド
●DCNOFLAGS
public static final int DCNOFLAGS = 0x00000000
RPCの形態に同期応答型RPCを指定します。
●DCRPC_NOREPLY
public static final int DCRPC_NOREPLY = 0x00000001
RPCの形態に非応答型RPCを指定します。
●DCRPC_CHAINED
public static final int DCRPC_CHAINED = 0x00000004
RPCの形態に連鎖型RPCを指定します。
●DCRPC_SCD_LOAD_PRIORITY
public static final int DCRPC_SCD_LOAD_PRIORITY = 0x00000008
サービス要求を受け付けた窓口となるTP1/Serverを優先して負荷分散するかどうかを指定します。
●DCRPC_WATCHTIMINHERIT
public static final int DCRPC_WATCHTIMINHERIT = 0x00000010
リモートAPI機能を使用したRPCを行う場合に,CUPの最大応答待ち時間をrapサーバ側に引き継ぐかどうかを指定します。
●DCRPC_RAP_AUTOCONNECT
public static final int DCRPC_RAP_AUTOCONNECT = 0x00000020
リモートAPI機能を利用したRPCを行う場合に,TP1/Client/Jが自動的にコネクションを確立するかどうかを指定します。
●DCRPC_TPNOTRAN
public static final int DCRPC_TPNOTRAN = 0x00000020
RPCの形態にトランザクションを引き継がないRPCを指定します。
●DCRPC_WATCHTIMRPCINHERIT
public static final int DCRPC_WATCHTIMRPCINHERIT = 0x00000040
CUPの最大応答待ち時間を,サーバ側に引き継ぐかどうかを指定します。
●DCRPC_MAX_MESSAGE_SIZE
public static final int DCRPC_MAX_MESSAGE_SIZE = 1048576
RPC電文の最大長を指定します。指定できる最大値は1048576バイトです。ただし,dccltrpcmaxmsgsizeオペランドを使用した場合,RPC電文の最大長は,DCRPC_MAX_MESSAGE_SIZEの値ではなく,dccltrpcmaxmsgsizeオペランドに指定した値になります。
コンストラクタ
●TP1Client
public TP1Client()
TP1Clientクラスのインスタンスを作成します。CUPをJavaアプリケーション,またはJavaサーブレットで作成する場合に使用します。
●TP1Client
public TP1Client(Applet app)
TP1Clientクラスのインスタンスを作成します。CUPをJavaアプレットとして作成する場合に使用します。
- パラメタ
-
- app
-
Javaアプレットのインスタンスオブジェクトを指定します。
メソッド
●setDccltinquiretime
public void setDccltinquiretime(int sec)
throws ErrInvalidArgsExceptionCUPがサーバに対して問い合わせを行ってから,次の問い合わせをするまでの間隔の最大時間を設定します。この値は,rapサーバで監視するタイマです。指定時間を超えても問い合わせがない場合,rapサーバは強制的に常設コネクションを切断します。このメソッドはTP1Clientクラスのインスタンスが存在している間,呼び出せます。
- パラメタ
-
- sec
-
rapサーバが監視する問い合わせ間隔最大時間を0から1048575(単位:秒)までの範囲で指定します。0を指定した場合は,rapサーバはCUPからの問い合わせを無限に待ちます。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
sec引数に指定された値が,0から1048575までの範囲にありません。
- 注意事項
-
常設コネクションの確立前に「問い合わせ間隔最大時間」を変更できます。
常設コネクションの確立後に「問い合わせ間隔最大時間」を変更しても,rapサーバ側の監視タイマには反映されません。この場合,確立中の常設コネクションを切断し,次回常設コネクションを確立するタイミングでrapサーバ側の監視タイマに反映されます。
●setDccltdelay
public void setDccltdelay(int sec)
throws ErrInvalidArgsExceptionrapサーバと,CUP間の通信遅延時間を設定します。このメソッドを設定すると,rapサーバ側の最大応答待ち時間の時間監視を指定した値の分だけ早く終了させ,CUP側の最大応答待ち時間の監視時間タイムアウトによる電文のすれ違いを防止できます。
setDcwatchtimメソッドで指定した最大応答待ち時間が0の場合,このメソッドで指定した通信遅延時間は無視されます。また,最大応答待ち時間からrapサーバ通信時間を引いた値が0または負の値になるときは,rapサーバ側での最大応答待ち時間を1と仮定してrapサーバが動作します。
なお,このメソッドの指定を有効にするには,TP1/Client/J環境定義でdcwatchtiminherit=Yを指定するか,またはsetRpcextendメソッドのDRPC_WATCHTIMINHERIT引数を指定してください。
- パラメタ
-
- sec
-
rapサーバと,CUP間の通信遅延時間を0から65535(単位:秒)までの範囲で指定します。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
sec引数に指定された値が,0から65535までの範囲にありません。
●setDcwatchtim
public void setDcwatchtim(int sec)
throws ErrInvalidArgsException同期応答型RPCの場合に,CUPからSPPへサービス要求を送ってからサービスの応答が返るまでの最大応答待ち時間を設定します。このメソッドで設定する値は,TP1/Client/Jの内部通信での最大応答待ち時間としても使用されます。
- パラメタ
-
- sec
-
最大応答待ち時間を0から65535(単位:秒)までの範囲で指定します。0を指定した場合は,応答を受信するまで無限に待ちます。使用するJava環境によっては,サーバがダウンしてもTCP/IPコネクションの切断を検出できない場合があります。この場合,待ち時間を無限にすると存在しないサーバからの応答を永久に待ち続けることになるため,適当な待ち時間を設定してください。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
sec引数に指定された値が,0から65535までの範囲にありません。
●setDcselint
public void setDcselint(int msec)
throws ErrInvalidArgsException推奨されていません。旧バージョンからのソースの互換性を保証するためだけに残しているメソッドです。現在は,このメソッドは意味を持ちません。
●setDccltextend
public void setDccltextend(int flags)
TP1/Client/Jの機能の拡張レベルを指定します。機能の拡張レベルを複数指定する場合,それぞれの指定値の論理和を指定します。
- パラメタ
-
- flags
-
TP1/Client/Jの機能の拡張レベルを指定します。
0x00000000:TP1/Client/Jの機能を拡張しません。
0x00000001:TP1/Client/Jの機能を拡張します。rpcCallメソッド呼び出し時,自CUPのIPアドレスをサービスに連絡します。呼び出したサービスでdc_rpc_get_callers_address()関数を実行し,CUPのアドレスを求める必要がある場合,指定してください。
- 戻り値
-
なし。
●setRpcextend
public void setRpcextend(int extendoption)
throws ErrInvalidArgsExceptionTP1/Client/Jから発行するRPCの機能拡張オプションを指定します。RPC機能の拡張レベルを複数指定する場合,それぞれの指定値の論理和を指定します。
- パラメタ
-
- extendoption
-
RPC機能の拡張レベルを指定します。
DCRPC_SCD_LOAD_PRIORITY:サービス要求を受け付けた窓口となるTP1/Serverを優先して負荷分散するかどうかを指定します。このオプションが真の場合,TP1/Client/J環境定義にdcscdloadpriority=Yを指定したときと同じ動作をします。このオプションが偽の場合,TP1/Client/J環境定義にdcscdloadpriority=Nを指定したときと同じ動作をします。
DCRPC_WATCHTIMINHERIT:リモートAPI機能を使用したRPCを行う場合に,CUPの最大応答待ち時間をrapサーバ側に引き継ぐかどうかを指定します。このオプションが真の場合,TP1/Client/J環境定義にdcwatchtiminherit=Yを指定したときと同じ動作をします。このオプションが偽の場合,TP1/Client/J環境定義にdcwatchtiminherit=Nを指定したときと同じ動作をします。
DCRPC_RAP_AUTOCONNECT:リモートAPI機能を使用したRPCを行う場合に,TP1/Client/Jが自動的にコネクションを確立するかどうかを指定します。このオプションが真の場合,TP1/Client/J環境定義にdcrapautoconnect=Yを指定したときと同じ動作をします。このオプションが偽の場合,TP1/Client/J環境定義にdcrapautoconnect=Nを指定したときと同じ動作をします。また,すでに非オートコネクトモードを使用し,openConnectionメソッドを呼び出してコネクションを確立している場合は,このオプションは無視されます。
DCRPC_WATCHTIMRPCINHERIT:CUPの最大応答待ち時間を,サーバ側に引き継ぐかどうかを指定します。このオプションが真の場合,TP1/Client/J環境定義にdcwatchtimrpcinherit=Yを指定したときと同じ動作をします。このオプションが偽の場合,TP1/Client/J環境定義にdcwatchtimrpcinherit=Nを指定したときと同じ動作をします。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
extendoption引数の指定に誤りがあります。
●setRpcServicePrio
public void setRpcServicePrio(int prio)
throws ErrInvalidArgsExceptionサービス要求のプライオリティを設定します。サービス要求単位でスケジュールプライオリティを制御する場合に呼び出します。このメソッドで設定したプライオリティは,このメソッドを再び呼び出すまで更新されません。したがって,同じプライオリティでまとめてサービス要求する場合は,このメソッドを1回だけ呼び出します。
このメソッドで指定したプライオリティは,直後に呼び出すrpcCallメソッドで,スケジュールキューを経由してサーバに通知されます。
このメソッドを一度も呼び出さない場合の処理は,省略時解釈値である4が,サービス要求のプライオリティとして指定されます。
rpcCloseメソッドを呼び出した場合は,サービス要求のプライオリティを省略時解釈値である4にリセットします。
- パラメタ
-
- prio
-
サービス要求のスケジュールプライオリティを,0または1から8の範囲で設定します。prioの設定は省略できません。
最も高いプライオリティの値は1で,最も低いプライオリティの値は8です。0を設定した場合は,省略時解釈値である4が,サービス要求のプライオリティとして指定されます。上記以外の値を設定した場合,setRpcServicePrioメソッドは例外を返します。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
メソッドの引数の指定に誤りがあります。
- 注意事項
-
-
設定したサービス要求のプライオリティは,サーバUAPがキュー受信型サーバであり,かつサーバUAPのユーザサービス定義にservice_priority_control=Y(プライオリティを制御する)を指定している場合だけ有効です。サービス要求する相手のサーバUAPでプライオリティを制御していない場合は,このメソッドを呼び出しても無効になります。
-
リモートAPI機能を使用したRPCでは,このメソッドでサービス要求のプライオリティを設定しても無効になります。
-
rpcCallメソッドは,サービス要求のプライオリティを省略値にリセットしません。サービス要求のプライオリティをリセットする場合は,引数prioに0を設定したsetRpcServicePrioメソッドを呼び出し直してください。
-
●setDchost
public void setDchost(String host, int port)
throws ErrHostUndefException,
ErrInvalidPortException,
ErrProtoException窓口となるTP1/Serverのホスト名とポート番号を設定します。
- パラメタ
-
- host
-
窓口となるTP1/Serverのホスト名を指定します。リモートAPI機能を使用したRPCを行う場合は,通信先のrapリスナーのホスト名を指定します。CUPとTP1/Serverの間にファイアウォールがある場合は,ファイアウォールのホスト名を指定します。
- port
-
窓口となるTP1/Server上で動作しているスケジュールサーバのポート番号,ネームサーバのポート番号を指定します。リモートAPI機能を使用したRPCを行う場合は,通信先のrapリスナーのポート番号を指定します。ポート番号は,5001から65535までの範囲で指定します。
- 戻り値
-
なし。
- 例外
-
- ErrHostUndefException
-
host引数の指定に誤りがあります。
- ErrInvalidPortException
-
port引数の指定に誤りがあります。
- ErrProtoException
-
メソッドの発行順序に誤りがあります。リモートAPI機能を使用したRPCを行う場合で,すでにrapサーバとの間に常設コネクションが確立されている状態でこのメソッドが呼び出されました。
●setTraceArray
public void setTraceArray(String[] array)
引数に指定された配列にエラートレースを取得するかどうかを指定します。CUPがJavaアプレット,Javaアプリケーション,およびJavaサーブレットのどの場合でも,このメソッドを呼び出せます。
- パラメタ
-
- array
-
エラートレースを格納するString配列を指定します。nullを指定した場合,エラートレースを取得しません。
- 戻り値
-
なし。
●setUapTraceMode
public void setUapTraceMode(String TrcPath,
int size,
boolean flag)
throws ErrInvalidArgsExceptionCUPがJavaアプリケーションまたはJavaサーブレットの場合,UAPトレースを取得するかどうかを指定します。CUPがJavaアプレットの場合,このメソッドを呼び出さないでください。
- パラメタ
-
- TrcPath
-
UAPトレースを出力するディレクトリを指定します。flag引数にfalseを指定した場合は無視されます。
- size
-
出力するUAPトレースファイルのサイズを4096から1048576までの範囲で指定します。flag引数にfalseを指定した場合は無視されます。
- flag
-
UAPトレースを取得するかどうかを指定します。
true:UAPトレースを取得します。
false:UAPトレースを取得しません。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
- 注意事項
-
このメソッドはJavaアプレットでは使用できません。Javaアプレットで使用した場合の動作は保証できません。
●setMethodTraceMode
public void setMethodTraceMode(String TrcPath,
int size,
boolean flag)
throws ErrInvalidArgsExceptionCUPがJavaアプリケーションまたはJavaサーブレットの場合,メソッドトレースを取得するかどうかを指定します。CUPがJavaアプレットの場合,このメソッドを呼び出さないでください。
- パラメタ
-
- TrcPath
-
メソッドトレースを出力するディレクトリを指定します。flag引数にfalseを指定した場合は無視されます。
- size
-
出力するメソッドトレースファイルのサイズを4096から1048576までの範囲で指定します。flag引数にfalseを指定した場合は無視されます。
- flag
-
メソッドトレースを取得するかどうかを指定します。
true:メソッドトレースを取得します。
false:メソッドトレースを取得しません。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
- 注意事項
-
このメソッドはJavaアプレットでは使用できません。Javaアプレットで使用した場合の動作は保証できません。
●setDataTraceMode
public void setDataTraceMode(String TrcPath,
int size,
int DataSize,
boolean flag)
throws ErrInvalidArgsExceptionCUPがJavaアプリケーションまたはJavaサーブレットの場合,データトレースを取得するかどうかを指定します。CUPがJavaアプレットの場合,このメソッドを呼び出さないでください。
- パラメタ
-
- TrcPath
-
データトレースを出力するディレクトリを指定します。flag引数にfalseを指定した場合は無視されます。
- size
-
出力するデータトレースファイルのサイズを4096から1048576までの範囲で指定します。flag引数にfalseを指定した場合は無視されます。
- DataSize
-
出力するデータサイズ16から1048576までの範囲で指定します。flag引数にfalseを指定した場合は無視されます。
- flag
-
データトレースを取得するかどうかを指定します。
true:データトレースを取得します。
false:データトレースを取得しません。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
- 注意事項
-
このメソッドはJavaアプレットでは使用できません。Javaアプレットで使用した場合の動作は保証できません。
●setErrorTraceMode
public void setErrorTraceMode(String TrcPath,
int size,
boolean flag)
throws ErrInvalidArgsExceptionCUPがJavaアプリケーションまたはJavaサーブレットの場合,エラートレースを取得するかどうかを指定します。CUPがJavaアプレットの場合,このメソッドを呼び出さないでください。
- パラメタ
-
- TrcPath
-
エラートレースを出力するディレクトリを指定します。flag引数にfalseを指定した場合は無視されます。
- size
-
出力するエラートレースファイルのサイズを4096から1048576までの範囲で指定します。flag引数にfalseを指定した場合は無視されます。
- flag
-
エラートレースを取得するかどうかを指定します。
true:エラートレースを取得します。
false:エラートレースを取得しません。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
- 注意事項
-
このメソッドはJavaアプレットでは使用できません。Javaアプレットで使用した場合の動作は保証できません。
●rpcOpen
public void rpcOpen()
throws ErrIOErrException,
ErrProtoException,
ErrFatalException,
ErrSecurityException,
ErrSyserrExceptionTP1/Client/Jの各機能を使用する環境を初期化します。CUPを実行するとき,最初にこのメソッドを呼び出します。
- パラメタ
-
なし。
- 戻り値
-
なし。
- 例外
-
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrProtoException
-
メソッドの発行順序に誤りがあります。rpcCloseメソッドが呼び出されないで再度rpcOpenメソッドが呼び出されました。
- ErrFatalException
-
TP1/Client/J環境定義の指定に誤りがあります。または,TP1/Serverとの通信環境の初期化に失敗しました。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrSecurityException
-
セキュリティ例外が発生しました。
- 注意事項
-
-
このメソッドをJavaアプリケーション,またはJavaサーブレットで使用する場合は,TP1/Client/J環境定義をシステムプロパティから取得します。
-
このメソッドをJavaアプレットで使用する場合は,TP1/Client/J環境定義をアプレットのparamタグから取得します。
-
このメソッドをJavaアプレットで使用する場合は,TP1Clientクラスをインスタンス化するコンストラクタに,TP1Client(Applet app)を使用してください。
-
●rpcOpen
public void rpcOpen(String deffilename)
throws ErrIOErrException,
ErrProtoException,
ErrFatalException,
ErrSyserrException,
ErrInvalidArgsException,
ErrSecurityExceptionTP1/Client/Jの各機能を使用する環境を初期化します。CUPを実行するとき,最初にこのメソッドを呼び出します。
- パラメタ
-
- deffilename
-
TP1/Client/J環境定義を格納したファイルのパス名を完全パス名または相対パス名で指定します。
- 戻り値
-
なし。
- 例外
-
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrProtoException
-
メソッドの発行順序に誤りがあります。rpcCloseメソッドを呼び出さないで再度rpcOpenメソッドが呼び出されました。
- ErrFatalException
-
TP1/Client/J環境定義に誤りがあります。または,TP1/Serverとの通信環境の初期化に失敗しました。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
- ErrSecurityException
-
セキュリティ例外が発生しました。
- 注意事項
-
このメソッドは,Javaアプレットでは使用できません。Javaアプレットで使用する場合は,このメソッドの前に説明したrpcOpenメソッドを使用してください。
●rpcClose
public void rpcClose()
throws ErrIOErrException,
ErrSyserrException,
ErrNetDownExceptionTP1/Client/Jの各機能を使用する環境を解放します。TP1/Client/Jの各機能を使用する場合は,rpcOpenメソッドを呼び出します。CUPの実行の最後にこのメソッドを呼び出します。
- パラメタ
-
なし。
- 戻り値
-
なし。
- 例外
-
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrNetDownException
-
ネットワーク障害が発生しました。
●openConnection
public void openConnection()
throws ErrIOErrException,
ErrHostUndefException,
ErrTimedOutException,
ErrNetDownException,
ErrNoBufsException,
ErrNotUpException,
ErrSyserrException,
ErrProtoException,
ErrInvalidPortExceptionTP1/Client/J環境定義のdchostオペランドおよびdcrapportオペランドで指定されたrapサーバとの間に常設コネクションを確立するか,またはdcweburlオペランドで指定されたOpenTP1のWWWセション管理機能を利用したサーバ(TP1/Web)に接続して擬似セションを開始します。
なお,TP1Clientクラスの1つのインスタンスに対して,同時に複数の常設コネクションは確立できません。
ただし,CUPと接続要求先rapリスナーの間にファイアウォールがある場合,接続要求先rapリスナーにはファイアウォールのホスト名とポート番号を指定してください。
- パラメタ
-
なし。
- 戻り値
-
なし。例外を返さない場合,正常終了したか,またはすでに常設コネクションが確立されています。
- 例外
-
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrHostUndefException
-
rapリスナーのホスト名がTP1/Client/J環境定義のdchostオペランドに指定されていません。
または,TP1/Client/J環境定義のdcweburlオペランドに指定されたURL(プロトコル,WWWサーバ,プロンプターのCGI名称,TP1/Webのサービス名などの情報)に誤りがあります。
- ErrTimedOutException
-
rapリスナーとのコネクション確立中にタイムアウトが発生しました。
または,TP1/Webの擬似セション開始中にタイムアウトが発生しました。
- ErrNetDownException
-
rapリスナー,またはTP1/Webとの通信でネットワーク障害が発生しました。
または,通信先のTP1/Serverが稼働していません。
- ErrNoBufsException
-
rapリスナー,rapサーバでメモリ不足が発生しました。
または,TP1/Webでメモリ不足が発生しました。
- ErrNotUpException
-
rapリスナー,rapサーバが稼働していません。
または,TP1/Webが稼働していません。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrProtoException
-
メソッドの発行順序に誤りがあります。すでにコネクションを確立している間に再度openConnectionメソッドが呼び出されました。
- ErrInvalidPortException
-
TP1/Client/J環境定義のdcrapportオペランドに指定されたポート番号が不正,または未指定です。
- 注意事項
-
接続先のrapリスナーが起動していない場合,ErrIOErrExceptionまたはErrNetDownExceptionが返されます。
このメソッドが例外を返した場合,常設コネクションは確立されていません。
●openConnection
public void openConnection(String host,
int port)
throws ErrIOErrException,
ErrHostUndefException,
ErrTimedOutException,
ErrNoBufsException,
ErrNotUpException,
ErrSyserrException,
ErrInvalidPortException,
ErrProtoException,
ErrInvalidArgsException,
ErrNetDownExceptionリモートAPI機能を使用したRPCを行うために,CUPとrapリスナー,rapサーバとの間に常設コネクションを確立します。常設コネクションの確立先はパラメタで指定された値を使用します。
- パラメタ
-
- host
-
rapリスナー,またはファイアウォールのホスト名を指定します。
- port
-
rapリスナー,またはファイアウォールのポート番号を5001から65535までの範囲で指定します。
- 戻り値
-
なし。例外を返さない場合,正常終了したか,またはすでに常設コネクションが確立されています。
- 例外
-
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrHostUndefException
-
host引数の指定に誤りがあります。
- ErrTimedOutException
-
rapリスナーとのコネクションの確立中にタイムアウトが発生しました。
- ErrNoBufsException
-
rapリスナー,rapサーバでメモリ不足が発生しました。
- ErrNotUpException
-
rapリスナー,rapサーバが稼働していません。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrInvalidPortException
-
port引数の指定に誤りがあります。
- ErrProtoException
-
メソッドの発行順序に誤りがあります。すでにコネクションを確立している間に再度openConnectionメソッドが呼び出されました。
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
- ErrNetDownException
-
rapリスナーとの通信でネットワーク障害が発生しました。または,通信先のTP1/Serverが稼働していません。
- 注意事項
-
接続先のrapリスナーが起動していない場合,ErrIOErrExceptionまたはErrNetDownExceptionが返されます。このメソッドが例外を返した場合,常設コネクションは確立されていません。
●openConnection
public void openConnection(String url,
short flags)
throws ErrIOErrException,
ErrHostUndefException,
ErrTimedOutException,
ErrNetDownException,
ErrNoBufsException,
ErrNotUpException,
ErrSyserrException,
ErrProtoException,
ErrInvalidArgsExceptionOpenTP1のWWWセション管理機能を利用したサーバ(TP1/Web)に接続し,擬似セションを開始します。以降,HTTPプロトコルに基づいた通信サービスを行えます。
- パラメタ
-
- url
-
プロトコル,WWWサーバ,プロンプターのCGI名称,TP1/Webのサービス名などの情報をURL形式で指定します。
- flags
-
DCSESSIONを指定します。
- 戻り値
-
なし。
- 例外
-
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrHostUndefException
-
url引数で指定されたURL(プロトコル,WWWサーバ,プロンプターのCGI名称,TP1/Webのサービス名などの情報)に誤りがあります。
- ErrTimedOutException
-
TP1/Webの擬似セション開始中にタイムアウトが発生しました。
- ErrNetDownException
-
ネットワーク障害が発生しました。
- ErrNoBufsException
-
TP1/Webでメモリ不足が発生しました。
- ErrNotUpException
-
TP1/Webが稼働していません。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrProtoException
-
メソッドの発行順序に誤りがあります。
すでにrapサーバとの間に常設コネクションが確立されている状態で,TP1/Client/J環境定義でdcrapautoconnect=Yまたはdcrapdirect=Nを指定しました。
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
●closeConnection
public void closeConnection()
throws ErrIOErrException,
ErrSyserrException,
ErrProtoException,
ErrTimedOutException,
ErrNetDownExceptionCUPとrapリスナー,rapサーバとの間で確立されている常設コネクションを切断します。
- パラメタ
-
なし。
- 戻り値
-
なし。
- 例外
-
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrProtoException
-
メソッドの発行順序に誤りがあります。すでにコネクションが切断されている間に再度closeConnectionメソッドが呼び出されました。
- ErrTimedOutException
-
TP1/Webとの擬似セション切断中またはrapリスナー,rapサーバとのコネクション切断中に,タイムアウトが発生しました。
- ErrNetDownException
-
rapリスナーとの通信でネットワーク障害が発生しました。
- 注意事項
-
このメソッドが例外を返した場合でも,常設コネクションは切断されています。
●rpcCall
public void rpcCall(String group,
String service,
byte[] in_data,
int[] in_len,
byte[] out_data,
int[] out_len,
int flags)
throws ErrInvalidArgsException,
ErrProtoException,
ErrNoBufsException,
ErrNetDownException,
ErrTimedOutException,
ErrMessageTooBigException,
ErrReplyTooBigException,
ErrNoSuchServiceGroupException,
ErrNoSuchServiceException,
ErrServiceClosedException,
ErrServiceTerminatingException,
ErrServiceNotUpException,
ErrNotUpException,
ErrSyserrAtServerException,
ErrSyserrException,
ErrNoBufsAtServerException,
ErrInvalidReplyException,
ErrInitializingException,
ErrTrnchkException,
ErrServerBusyException,
ErrSecchkException,
ErrServiceTerminatedException,
ErrIOErrException,
ErrTestmodeException,
ErrConnfreeException,
ErrHostUndefException,
ErrInvalidPortExceptionSPPのサービスを要求します。サービスグループ名とサービス名の組み合わせで識別されるサービス関数を呼び出し,その応答を受け取ります。このメソッドを呼び出したときに,目的のサービスグループが閉塞されているとErrServiceClosedExceptionが返されます。
flags引数にDCRPC_TPNOTRANを指定すると,トランザクションの処理からのRPCをトランザクションの処理ではないサービス要求にできます。
このメソッドを呼び出したときに,目的のサービスグループがdcsvstopコマンドなどで終了処理中,または終了している場合,ErrServiceTerminatingException,ErrServiceClosedException,またはErrNoSuchServiceGroupExceptionのどれかが返されます。どの例外が返されるかは,このメソッドを呼び出したタイミングによって異なります。
ソケット受信型サーバでは,ユーザサービス定義のmax_socket_msgおよびmax_socket_msglenオペランドの指定で電文の輻輳制御を行っています。そのためサーバがサービス要求を受信できない場合があります。この場合,メソッドを呼び出すとErrServerBusyExceptionが返されます。この例外が返されたあと,適当な時間を置いてから再度このメソッドを呼び出すと,サービス要求できることがあります。
- パラメタ
-
- group
-
サービスグループ名を31文字以内の識別子で指定します。
- service
-
サービス名を31文字以内の識別子で指定します。
- in_data
-
サービスの入力パラメタを指定します。
- in_len
-
サービスの入力パラメタ長を1からDCRPC_MAX_MESSAGE_SIZE※の指定値までの範囲で指定します。入力パラメタ長はin_len[0]に格納してください。
注※
dccltrpcmaxmsgsizeオペランドを使用した場合,DCRPC_MAX_MESSAGE_SIZEの値ではなく,dccltrpcmaxmsgsizeオペランドに指定した値になります。
- out_data
-
サービス関数で指定した応答が返される領域を指定します。
非応答型RPCの場合はnullを指定します。非応答型RPCの場合,null以外の値を指定しても何も格納されません。
- out_len
-
サービスの応答の長さを1からDCRPC_MAX_MESSAGE_SIZE※の指定値までの範囲で指定します。応答の長さはout_len[0]に格納してください。
サービス要求終了時,SPPのサービス関数で指定した応答の長さがout_len[0]に設定されます。
非応答型RPCの場合,応答の長さを指定しても無視され,サービス要求終了時,out_len[0]には何も設定されません。
注※
dccltrpcmaxmsgsizeオペランドを使用した場合,DCRPC_MAX_MESSAGE_SIZEの値ではなく,dccltrpcmaxmsgsizeオペランドに指定した値になります。
- flags
-
RPCの形態を指定します。
DCNOFLAGS:同期応答型RPC
DCRPC_NOREPLY:非応答型RPC
DCRPC_CHAINED:連鎖型RPC
DCRPC_TPNOTRAN:トランザクションを引き継がないRPC
DCNOFLAGSまたはDCRPC_CHAINEDを指定すると,サーバから応答が返されるか,TP1/Client/J環境定義のdcwatchtimオペランドで指定した最大応答待ち時間が経過してタイムアウトになるまで,このメソッドは制御を戻しません。ただし,サービス要求先のSPPが異常終了した場合は,すぐに例外を返します。この場合,TP1/Client/J環境定義のdcwatchtimオペランドで指定した値によって,次の例外を返します。
-
1〜65535の値を指定した場合
ErrTimedOutException
-
0を指定した場合
ErrServiceNotUpException
DCRPC_NOREPLYを指定すると,要求したサービスは応答を返さないサービスとみなされます。この場合,このメソッドはサービスの実行終了を待たないですぐに制御を戻します。このフラグを指定した場合,応答(out_data引数の指定値)と応答の長さ(out_len引数の指定値)は参照できません。さらに,サービス関数が実行されたかどうかはCUP側からはわかりません。
DCRPC_CHAINEDを指定すると,同じサービスグループに属するサービスを複数回要求する場合は,最初の要求時と同一のプロセスで実行されます。
連鎖型RPCを使用する場合,次に示す制限があります。
-
2回目以降のこのメソッドの呼び出しは,ユーザサーバおよびサービスの閉塞を検出できません。
-
2回目以降のこのメソッドの呼び出しで,サービス関数の処理に異常が発生した場合,サービス単位ではなくユーザサーバ全体が閉塞します。
-
リモートAPI機能を使用する場合に限り,flags引数にDCRPC_CHAINEDを指定できます。リモートAPI機能を使用しない場合,flags引数にDCRPC_CHAINEDを指定するとErrInvalidArgsExceptionが返されます。
-
連鎖型RPCは,次のどちらかの方法で終了させてください。
・連鎖型RPCを実行しているサービスグループに対して,flags引数にDCNOFLAGSを指定したrpcCallメソッド(同期応答型RPC)を実行する。※
・連鎖型RPCを実行しているグローバルトランザクションを同期点処理(コミットまたはロールバック)で完了させる。
注※
同期応答型RPCを実行しないでcloseConnectionメソッドまたはrpcCloseメソッドを呼び出すと,TP1/Client/JのAPIは正常終了しますが,次の状態となります。
・グローバルトランザクションの範囲外の場合
サービスを実行していたプロセスは連鎖型RPCタイムアウトになるまで占有されます。
・グローバルトランザクションの範囲内の場合
暗黙的にコミットされ,連鎖型RPCを終了します。
DCRPC_TPNOTRANを指定すると,トランザクションの処理からのRPCは,トランザクションの処理にしないサービス要求になります。トランザクションの処理からだけDCRPC_TPNOTRANを指定できます。DCRPC_TPNOTRANは,DCNOFLAGS,DCRPC_NOREPLY,またはDCRPC_CHAINEDとあわせて指定できます。
(例)flags = TP1Client.DCNOFLAGS|TP1Client.DCRPC_TPNOTRAN;
-
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。この場合,詳細メッセージに誤った引数名が設定されます。
- ErrProtoException
-
メソッドの発行順序に誤りがあります。openConnectionメソッドが呼び出されていません。
- ErrNoBufsException
-
メモリ不足が発生しました。
- ErrNetDownException
-
ネットワーク障害が発生しました。または,通信先のTP1/Serverが稼働していません。
- ErrTimedOutException
-
次の要因が考えられます。
-
このメソッドの処理でタイムアウトが発生しました。
-
サービス要求先SPPが処理を完了する前に異常終了しました。
-
dcresponsehostオペランドに指定したホスト名またはIPアドレスが誤っているため,応答電文の受信ができず時間切れ(タイムアウト)が発生しました。
-
- ErrMessageTooBigException
-
in_len引数に指定した入力パラメタ長が最大値を超えています。
- ErrReplyTooBigException
-
サーバから返された応答の長さが,CUPで用意した領域(out_data引数の指定値)の長さを超えています。
- ErrNoSuchServiceGroupException
-
group引数に指定したサービスグループ名は定義されていません。
- ErrNoSuchServiceException
-
service引数に指定したサービス名は定義されていません。
- ErrServiceClosedException
-
service引数に指定したサービス名が存在するサービスグループは閉塞されています。
- ErrServiceTerminatingException
-
service引数に指定したサービスは終了処理中です。
- ErrServiceNotUpException
-
サービス要求したSPPは稼働していません。または,サービス要求したSPPが処理を完了する前に異常終了しました。この例外はTP1/Client/J環境定義にdcwatchtim=0を指定(応答を無限に待つ)した場合に返されます。
- ErrNotUpException
-
指定したサービスが存在するノードのTP1/Serverが稼働していません。この場合,異常終了,停止中,終了処理中,およびネットワーク障害の発生が考えられます。
- ErrSyserrAtServerException
-
指定したサービスでシステムエラーが発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrNoBufsAtServerException
-
指定したサービスでメモリ不足が発生しました。
- ErrInvalidReplyException
-
サービス関数が返した応答の長さが1からDCRPC_MAX_MESSAGE_SIZE※で指定した値までの範囲にありません。
注※
dccltrpcmaxmsgsizeオペランドを使用した場合,DCRPC_MAX_MESSAGE_SIZEの値ではなく,dccltrpcmaxmsgsizeオペランドに指定した値になります。
- ErrInitializingException
-
サービス要求したノードにあるTP1/Serverは開始処理中です。
- ErrTrnchkException
-
ノード間負荷バランス機能を使用している環境で,複数のSPPのトランザクション属性が一致していません。または,負荷を分散する先のノードにあるTP1/Serverのバージョンが,TP1/Client/Jのバージョンよりも古いため,ノード間負荷バランス機能を実行できません。この例外は,ノード間負荷バランス機能を使用しているSPPにサービス要求した場合にだけ返されます。
- ErrServerBusyException
-
サービス要求先のソケット受信型サーバが,サービス要求を受信できません。
- ErrSecchkException
-
サービス要求先のSPPは,セキュリティ機能で保護されています。rpcCallメソッドを呼び出したCUPには,SPPへのアクセス権限がありません。
- ErrServiceTerminatedException
-
サービス要求したSPPが,処理を完了する前に異常終了しました。この例外はrapリスナーサービス定義のrpc_extend_functionオペランドに00000001を指定した場合にだけ返されます。rpc_extend_functionオペランドに00000000を指定,またはオペランドを省略した場合は,ErrTimedOutExceptionまたはErrServiceNotUpExceptionが返されます。
- ErrIOErrException
-
何らかの入出力例外が発生しました。rapサーバが問い合わせ間隔の時間監視でタイムアウトし,コネクションを切断したことも考えられます。
- ErrTestmodeException
-
テストモードのSPPに対してサービス要求を行いました。
- ErrConnfreeException
-
rapサーバとの常設コネクションが切断されました。または,TP1/Webとの擬似セションが切断されました。
- ErrHostUndefException
-
次の要因が考えられます。
-
通信先となるTP1/Serverのホスト名がTP1/Client/J環境定義のdchostオペランドに指定されていないか,または指定に誤りがあります。
-
TP1/Client/J環境定義のdcweburlオペランドに指定されたURL(プロトコル,WWWサーバ,プロンプターのCGI名称,TP1/Webのサービス名などの情報)に誤りがあります。
-
- ErrInvalidPortException
-
次の要因が考えられます。
-
リモートAPI機能を使用したRPCを行う場合,TP1/Client/J環境定義のdcrapportオペランドが指定されていない
-
スケジューラダイレクト機能を使用したRPCを行う場合,TP1/Client/J環境定義のdcscdportオペランドが指定されていない
-
- 注意事項
-
-
入力パラメタ(in_data引数の指定値)と,サービス関数の応答(out_data引数の指定値)に同じ領域を指定しないでください。
-
flags引数にDCRPC_NOREPLYを指定した場合,次の例外は返されません。
- 発生しない例外
-
-
ErrReplyTooBigException
-
ErrInvalidReplyException
-
- 発生しても検出できない例外
-
-
ErrNoSuchServiceException
-
ErrServiceClosedException
-
ErrServiceTerminatingException
-
ErrSyserrAtServerException
-
ErrNoBufsAtServerException
-
ErrNotUpException
-
-
ErrTimedOutExceptionが返される場合,次に示す要因が考えられます。
・TP1/Client/J環境定義またはTP1/Serverの定義で指定した最大応答待ち時間が短い
・サービス要求先のSPPから発行したサービス関数が異常終了した
・サービス要求先のSPPが存在するノードに障害が発生した
・サービス要求先のSPPの処理完了前に異常終了した
・ネットワーク障害が発生した
・dcresponsehostオペランドに指定したホスト名またはIPアドレスが誤っているため,応答電文の受信ができず時間切れ(タイムアウト)が発生した
上記の場合,サービス要求先のSPPから開始したトランザクションの処理はコミットされて,データベースが更新されていることがあります。データベースが更新されているかどうか確認してください。
-
このメソッドの呼び出し時,何らかの障害が発生した場合には例外が返されますが,その障害によってrapリスナー,rapサーバとの常設コネクションが切断されたかどうかは,その時点では判断できません。この場合,再びこのメソッドを呼び出すと,rapリスナー,rapサーバとの常設コネクションが切断されていればErrConnfreeExceptionが返されます。
-
このメソッドの呼び出し時,何らかの障害でrapリスナー,rapサーバとの常設コネクションが切断された場合,再びopenConnectionメソッドを呼び出してrapリスナー,rapサーバとの常設コネクションを確立する必要があります。
-
オートコネクトモードを使用した常設コネクションの場合,サービス要求送信時にrapサーバとのネットワーク障害が発生すると,一度だけリトライ処理を行います。リトライしてもコネクションが確立されない場合は,ErrNetDownExceptionが返されます。
-
スケジューラダイレクト機能を使用したRPC,およびネームサービスを使用したRPCでは,flags引数にDCRPC_CHAINEDを指定できません。リモートAPI機能を使用する場合は,flags引数にDCRPC_CHAINEDを指定できます。
-
●rpcCall
public void rpcCall(String group,
String service,
byte[] in_data,
byte[] out_data,
int flags)
throws ErrInvalidArgsException,
ErrProtoException,
ErrNoBufsException,
ErrNetDownException,
ErrTimedOutException,
ErrMessageTooBigException,
ErrReplyTooBigException,
ErrNoSuchServiceGroupException,
ErrNoSuchServiceException,
ErrServiceClosedException,
ErrServiceTerminatingException,
ErrServiceNotUpException,
ErrNotUpException,
ErrSyserrAtServerException,
ErrSyserrException,
ErrNoBufsAtServerException,
ErrInvalidReplyException,
ErrInitializingException,
ErrTrnchkException,
ErrServerBusyException,
ErrSecchkException,
ErrServiceTerminatedException,
ErrIOErrException,
ErrTestmodeException,
ErrConnfreeException,
ErrHostUndefException,
ErrInvalidPortExceptionSPPのサービスを要求します。サービスグループ名とサービス名の組み合わせで識別されるサービス関数を呼び出し,その応答を受け取ります。このメソッドを呼び出したときに,目的のサービスグループが閉塞されているとErrServiceClosedExceptionが返されます。
flags引数にDCRPC_TPNOTRANを指定すると,トランザクションの処理からのRPCをトランザクションの処理ではないサービス要求にできます。
このメソッドを呼び出したときに,目的のサービスグループがdcsvstopコマンドなどで終了処理中,または終了している場合,ErrServiceTerminatingException,ErrServiceClosedException,またはErrNoSuchServiceGroupExceptionのどれかが返されます。どの例外が返されるかは,このメソッドを呼び出したタイミングによって異なります。
ソケット受信型サーバでは,ユーザサービス定義のmax_socket_msgおよびmax_socket_msglenオペランドの指定で電文の輻輳制御を行っています。そのためサーバがサービス要求を受信できない場合があります。この場合,このメソッドを呼び出すとErrServerBusyExceptionが返されます。この例外が返されたあと,適当な時間を置いてから再度このメソッドを呼び出すと,サービス要求できることがあります。
- パラメタ
-
- group
-
サービスグループ名を31文字以内の識別子で指定します。
- service
-
サービス名を31文字以内の識別子で指定します。
- in_data
-
サービスの入力パラメタを指定します。
- out_data
-
サービス関数で指定した応答が返される領域を指定します。
非応答型RPCの場合はnullを指定します。非応答型RPCの場合,null以外の値を指定しても何も格納されません。
- flags
-
RPCの形態を指定します。
DCNOFLAGS:同期応答型RPC
DCRPC_NOREPLY:非応答型RPC
DCRPC_CHAINED:連鎖型RPC
DCRPC_TPNOTRAN:トランザクションを引き継がないRPC
DCNOFLAGSまたはDCRPC_CHAINEDを指定すると,サーバから応答が返されるか,TP1/Client/J環境定義のdcwatchtimオペランドで指定した最大応答待ち時間が経過してタイムアウトになるまで,このメソッドは制御を戻しません。ただし,サービス要求先のSPPが異常終了した場合は,すぐに例外を返します。この場合,TP1/Client/J環境定義のdcwatchtimオペランドで指定された最大応答待ち時間によって,次の例外を返します。
-
1〜65535の値を指定した場合
ErrTimedOutException
-
0を指定した場合
ErrServiceNotUpException
DCRPC_NOREPLYを指定すると,要求したサービスは応答を返さないサービスとみなされます。この場合,このメソッドはサービスの実行終了を待たないですぐに制御を戻します。このフラグを指定した場合,応答(out_data引数の指定値)と応答の長さ(out_len引数の指定値)は参照できません。さらに,サービス関数が実行されたかどうかはCUP側からはわかりません。
DCRPC_CHAINEDを指定すると,同じサービスグループに属するサービスを複数回要求する場合は,最初の要求時と同一のプロセスで実行されます。
連鎖型RPCを使用する場合,次に示す制限があります。
-
2回目以降のこのメソッドの呼び出しは,ユーザサーバおよびサービスの閉塞を検出できません。
-
2回目以降のこのメソッドの呼び出しでサービス関数の処理に異常が発生した場合,サービス単位ではなくユーザサーバ全体が閉塞します。
-
flags引数にDCRPC_CHAINEDを指定して呼び出したサービスの場合,最後のサービス要求ではDCNOFLAGSを指定してRPCを実行してください。最後のサービス要求でDCNOFLAGSを指定しないでcloseConnectionメソッドを呼び出すと,ErrTimedOutException,またはほかの例外が返されます。また,サービスを実行していたプロセスは連鎖型RPCタイムアウトになるまでプロセスを占有されます。
-
リモートAPI機能を使用する場合に限り,flags引数にDCRPC_CHAINEDを指定できます。
-
連鎖型RPCは,次のどちらかの方法で終了させてください。
・連鎖型RPCを実行しているサービスグループに対して,flags引数にDCNOFLAGSを指定したrpcCallメソッド(同期応答型RPC)を実行する。※
・連鎖型RPCを実行しているグローバルトランザクションを同期点処理(コミット,またはロールバック)で完了させる。
注※
同期応答型RPCを実行しないでcloseConnectionメソッド,またはrpcCloseメソッドを呼び出すと,TP1/Client/JのAPIは正常終了しますが,次の状態となります。
・グローバルトランザクションの範囲外の場合
サービスを実行していたプロセスは連鎖型RPCタイムアウトになるまで占有されます。
・グローバルトランザクションの範囲内の場合
暗黙的にコミットされ,連鎖型RPCを終了します。
DCRPC_TPNOTRANを指定すると,トランザクションの処理からのRPCは,トランザクションの処理にしないサービス要求になります。トランザクション外の処理からはDCRPC_TPNOTRANを指定できません。DCRPC_TPNOTRANは,DCNOFLAGS,DCRPC_NOREPLY,またはDCRPC_CHAINEDとあわせて指定できます。
(例)flags = TP1Client.DCNOFLAGS|TP1Client.DCRPC_TPNOTRAN;
-
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。この場合,詳細メッセージに誤った引数名が設定されます。
- ErrProtoException
-
メソッドの発行順序に誤りがあります。openConnectionメソッドが呼び出されていません。
- ErrNoBufsException
-
メモリ不足が発生しました。
- ErrNetDownException
-
ネットワーク障害が発生しました。または,通信先のTP1/Serverが稼働していません。
- ErrTimedOutException
-
次の要因が考えられます。
-
このメソッドの処理でタイムアウトが発生しました。
-
サービス要求先SPPが処理を完了する前に異常終了しました。
-
dcresponsehostオペランドに指定したホスト名またはIPアドレスが誤っているため,応答電文の受信ができず時間切れ(タイムアウト)が発生しました。
-
- ErrMessageTooBigException
-
in_len引数に指定した入力パラメタ長が最大値を超えています。
- ErrReplyTooBigException
-
サーバから返された応答の長さが,CUPで用意した領域(out_data引数の指定値)の長さを超えています。
- ErrNoSuchServiceGroupException
-
group引数に指定したサービスグループ名は定義されていません。
- ErrNoSuchServiceException
-
service引数に指定したサービス名は定義されていません。
- ErrServiceClosedException
-
service引数に指定したサービス名が存在するサービスグループは閉塞されています。
- ErrServiceTerminatingException
-
service引数に指定したサービスは終了処理中です。
- ErrServiceNotUpException
-
サービス要求したSPPは稼働していません。または,サービス要求したSPPが処理を完了する前に異常終了しました。この例外はTP1/Client/J環境定義にdcwatchtim=0を指定(応答を無限に待つ)した場合に返されます。
- ErrNotUpException
-
指定したサービスが存在するノードのTP1/Serverが稼働していません。この場合,異常終了,停止中,終了処理中,およびネットワーク障害の発生が考えられます。
- ErrSyserrAtServerException
-
指定したサービスでシステムエラーが発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrNoBufsAtServerException
-
指定したサービスでメモリ不足が発生しました。
- ErrInvalidReplyException
-
サービス関数が返した応答の長さが1からDCRPC_MAX_MESSAGE_SIZE※で指定した値までの範囲にありません。
注※
dccltrpcmaxmsgsizeオペランドを使用した場合,DCRPC_MAX_MESSAGE_SIZEの値ではなく,dccltrpcmaxmsgsizeオペランドに指定した値になります。
- ErrInitializingException
-
サービス要求したノードにあるTP1/Serverは開始処理中です。
- ErrTrnchkException
-
ノード間負荷バランス機能を使用している環境で,複数のSPPのトランザクション属性が一致していません。または,負荷を分散する先のノードにあるTP1/Serverのバージョンが,TP1/Client/Jのバージョンよりも古いため,ノード間負荷バランス機能を実行できません。この例外は,ノード間負荷バランス機能を使用しているSPPにサービス要求した場合にだけ返されます。
- ErrServerBusyException
-
サービス要求先のソケット受信型サーバが,サービス要求を受信できません。
- ErrSecchkException
-
サービス要求先のSPPは,セキュリティ機能で保護されています。rpcCallメソッドを呼び出したCUPには,SPPへのアクセス権限がありません。
- ErrServiceTerminatedException
-
サービス要求したSPPが,処理を完了する前に異常終了しました。この例外はrapリスナーサービス定義のrpc_extend_functionオペランドに00000001を指定した場合にだけ返されます。rpc_extend_functionオペランドに00000000を指定,またはオペランドを省略した場合は,ErrTimedOutExceptionまたはErrServiceNotUpExceptionが返されます。
- ErrIOErrException
-
何らかの入出力例外が発生しました。rapサーバが問い合わせ間隔の時間監視でタイムアウトし,コネクションを切断したことも考えられます。
- ErrTestmodeException
-
テストモードのSPPに対してサービス要求を行いました。
- ErrConnfreeException
-
rapサーバとの常設コネクションが切断されました。または,TP1/Webとの擬似セションが切断されました。
- ErrHostUndefException
-
次の要因が考えられます。
-
通信先となるTP1/Serverのホスト名がTP1/Client/J環境定義のdchostオペランドに指定されていないか,または指定に誤りがあります。
-
TP1/Client/J環境定義のdcweburlオペランドに指定されたURL(プロトコル,WWWサーバ,プロンプターのCGI名称,TP1/Webのサービス名などの情報)に誤りがあります。
-
- ErrInvalidPortException
-
次の要因が考えられます。
-
リモートAPI機能を使用したRPCを行う場合,TP1/Client/J環境定義のdcrapportオペランドが指定されていない
-
スケジューラダイレクト機能を使用したRPCを行う場合,TP1/Client/J環境定義のdcscdportオペランドが指定されていない
-
- 注意事項
-
-
入力パラメタ(in_data引数の指定値)と,サービス関数の応答(out_data引数の指定値)に同じ領域を指定しないでください。
-
flags引数にDCRPC_NOREPLYを指定した場合,次の例外は返されません。
- 発生しない例外
-
-
ErrReplyTooBigException
-
ErrInvalidReplyException
-
- 発生しても検出できない例外
-
-
ErrNoSuchServiceException
-
ErrServiceClosedException
-
ErrServiceTerminatingException
-
ErrSyserrAtServerException
-
ErrNoBufsAtServerException
-
ErrNotUpException
-
-
ErrTimedOutExceptionが返される場合,次に示す要因が考えられます。
・TP1/Client/J環境定義またはTP1/Serverの定義で指定した最大応答待ち時間が短い
・サービス要求先のSPPから発行したサービス関数が異常終了した
・サービス要求先のSPPが存在するノードに障害が発生した
・サービス要求先のSPPの処理完了前に異常終了した
・ネットワーク障害が発生した
・dcresponsehostオペランドに指定したホスト名またはIPアドレスが誤っているため,応答電文の受信ができず時間切れ(タイムアウト)が発生した
上記の場合,サービス要求先のSPPから開始したトランザクションの処理はコミットされて,データベースが更新されていることがあります。データベースが更新されているかどうか確認してください。
-
このメソッドの呼び出し時,何らかの障害が発生した場合には例外が返されますが,その障害によってrapリスナー,rapサーバとの常設コネクションが切断されたかどうかは,その時点では判断できません。この場合,再びこのメソッドを呼び出すと,rapリスナー,rapサーバとの常設コネクションが切断されていればErrConnfreeExceptionが返されます。
-
このメソッドの呼び出し時,何らかの障害でrapリスナー,rapサーバとの常設コネクションが切断された場合,再びopenConnectionメソッドを呼び出してrapリスナー,rapサーバとの常設コネクションを確立する必要があります。
-
オートコネクトモードを使用した常設コネクションの場合,サービス要求送信時にrapサーバとのネットワーク障害が発生すると,一度だけリトライ処理を行います。リトライしてもコネクションが確立されない場合は,ErrNetDownExceptionが返されます。
-
スケジューラダイレクト機能を使用したRPC,およびネームサービスを使用したRPCでは,flags引数にDCRPC_CHAINEDを指定できません。リモートAPI機能を使用する場合は,flags引数にDCRPC_CHAINEDを指定できます。
-
●rpcCallTo
public void rpcCallTo(DCRpcBindTbl direction,
String group,
String service,
byte[] in_data,
int[] in_len,
byte[] out_data,
int[] out_len,
int flags)
throws ErrInvalidArgsException,
ErrProtoException,
ErrNoBufsException,
ErrNetDownException,
ErrTimedOutException,
ErrMessageTooBigException,
ErrReplyTooBigException,
ErrNoSuchServiceGroupException,
ErrNoSuchServiceException,
ErrServiceClosedException,
ErrServiceTerminatingException,
ErrServiceNotUpException,
ErrNotUpException,
ErrSyserrAtServerException,
ErrSyserrException,
ErrNoBufsAtServerException,
ErrInvalidReplyException,
ErrInitializingException,
ErrTrnchkException,
ErrServerBusyException,
ErrSecchkException,
ErrServiceTerminatedException,
ErrIOErrException,
ErrTestmodeException,
ErrConnfreeException,
ErrHostUndefException,
ErrInvalidPortExceptionrpcCallメソッドと同様に,SPPのサービスを要求します。rpcCallToメソッドでは,サービスグループ名,サービス名,およびホスト名を検索のキーにして,該当するサービス関数をサービスの要求先に限定します。
このメソッドを呼び出す前にsetScdDirectObjectメソッドを呼び出し,DCRpcBindTblインスタンスを作成しておく必要があります。それ以外のインタフェースは,rpcCallメソッドと同じです。
- パラメタ
-
- direction
-
DCRpcBindTblオブジェクトを指定します。このメソッドを呼び出す前にsetScdDirectObjectメソッドを呼び出し,通信先情報を設定しておきます。
- group
-
サービスグループ名を31文字以内の識別子で指定します。
- service
-
サービス名を31文字以内の識別子で指定します。
- in_data
-
サービスの入力パラメタを指定します。
- in_len
-
サービスの入力パラメタ長を1からDCRPC_MAX_MESSAGE_SIZE※の指定値までの範囲で指定します。入力パラメタ長はin_len[0]に格納してください。
注※
dccltrpcmaxmsgsizeオペランドを使用した場合,DCRPC_MAX_MESSAGE_SIZEの値ではなく,dccltrpcmaxmsgsizeオペランドに指定した値になります。
- out_data
-
サービス関数で指定した応答が返される領域を指定します。
非応答型RPCの場合はnullを指定します。非応答型RPCの場合,null以外の値を指定しても何も格納されません。
- out_len
-
サービスの応答の長さを1からDCRPC_MAX_MESSAGE_SIZE※の指定値までの範囲で指定します。応答の長さはout_len[0]に格納してください。
注※
dccltrpcmaxmsgsizeオペランドを使用した場合,DCRPC_MAX_MESSAGE_SIZEの値ではなく,dccltrpcmaxmsgsizeオペランドに指定した値になります。
- flags
-
RPCの形態を指定します。
DCNOFLAGS:同期応答型RPC
DCRPC_NOREPLY:非応答型RPC
- 戻り値
-
なし。
- 例外
-
rpcCallメソッドの例外と同じ。
- 注意事項
-
-
ソケット受信型のユーザサーバにサービス要求を行った場合,このメソッドは,ErrServiceNotUpExceptionを返します。
-
サービス要求先のTP1/Serverのバージョンは,03-03以降でなければなりません。これ以前のバージョンのTP1/Serverをサービス要求先に指定した場合は,動作の保証はできません。
-
このメソッドは,リモートAPI機能を使用したRPCでは使用できません。リモートAPI機能を使用しているときにこのメソッドを発行した場合,このメソッドは,ErrProtoExceptionを返します。
-
このメソッドは,連鎖型RPCでは使用できません。flags引数にDCRPC_CHAINEDを指定した場合,このメソッドはErrInvalidArgsExceptionを返します。
-
rpcCallToメソッドの呼び出し時は,TP1/Client/J環境定義の次のオペランドは参照されません。
・dchost
・dcscdport
・dcnamport
・dcscdloadpriority
また,setDchostメソッドで指定されたホスト名,ポート番号も参照されません。これらの指定値は,次回rpcCallメソッドの呼び出し時に有効になります。
-
サービス要求先のホスト名に誤りがあった場合,このメソッドはErrHostUndefExceptionを返します。
-
サービス要求先のポート番号に誤りがあった場合,このメソッドはErrInvalidPortExceptionを返します。
-
●setScdDirectObject
public DCRpcBindTbl setScdDirectObject(String scdhost,
int scdport,
int flags)通信先スケジューラのホスト名,ポート番号を設定します。
- パラメタ
-
- scdhost
-
通信先スケジュールサーバのホスト名を指定します。不正なホスト名,およびnullが指定された場合,このメソッドのあとに呼び出すrpcCallToメソッドは,ErrHostUndefExceptionを返します。
- scdport
-
通信先スケジュールサーバのポート番号を指定します。ポート番号は,5001から65535までの範囲で指定します。不正なポート番号が指定された場合,このメソッドのあとに呼び出すrpcCallToメソッドは,ErrInvalidPortExceptionを返します。
- flags
-
DCNOFLAGSを指定します。
- 戻り値
-
DCRpcBindTblオブジェクト。
●trnBegin
public void trnBegin()
throws ErrProtoException,
ErrTMException,
ErrRMException,
ErrNoBufsException,
ErrNotUpException,
ErrTimedOutException,
ErrIOErrException,
ErrConnfreeException,
ErrSyserrException,
ErrNetDownException,
ErrHostUndefException,
ErrInvalidPortExceptionグローバルトランザクションを,trnBeginメソッドを呼び出すTP1Clientオブジェクトから開始します。
このメソッドは,リモートAPI機能を使用する場合で,要求先TP1/Server Baseのバージョンが05-00以降のときだけ使用できます。
- パラメタ
-
なし。
- 戻り値
-
なし。
- 例外
-
- ErrProtoException
-
trnBeginメソッドを不正なコンテキストから呼び出しています。
- ErrTMException
-
トランザクションサービスでエラーが発生したため,トランザクションは開始できませんでした。この例外が返されたあと,適当な時間を置いてから再度このメソッドを呼び出すと,トランザクションを開始できることがあります。
- ErrRMException
-
リソースマネジャでエラーが発生しました。トランザクションは開始できませんでした。
- ErrNoBufsException
-
メモリ不足が発生しました。
- ErrNotUpException
-
TP1/Serverが稼働していません。
- ErrTimedOutException
-
タイムアウトが発生しました。
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrConnfreeException
-
CUP実行プロセス側から常設コネクションが解放されました。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrNetDownException
-
ネットワーク障害が発生しました。
- ErrHostUndefException
-
通信先となるTP1/Serverのホスト名がTP1/Client/J環境定義のdchostオペランドに指定されていないか,または指定に誤りがあります。
- ErrInvalidPortException
-
TP1/Client/J環境定義のdcrapportオペランドに指定されたポート番号が不正,または未指定です。
●trnChainedCommit
public void trnChainedCommit()
throws ErrProtoException,
ErrRollbackException,
ErrHeuristicException,
ErrHazardException,
ErrNoBeginException,
ErrRollbackNoBeginException,
ErrHeuristicNoBeginException,
ErrHazardNoBeginException,
ErrNoBufsException,
ErrNotUpException,
ErrTimedOutException,
ErrIOErrException,
ErrConnfreeException,
ErrNetDownException,
ErrSyserrExceptionトランザクションの同期点を取得します。
trnChainedCommitメソッドが正常終了すると新しいグローバルトランザクションが発生し,以降実行するメソッドは新しいグローバルトランザクションの範囲になります。
- パラメタ
-
なし。
- 戻り値
-
なし。
- 例外
-
- ErrProtoException
-
trnChainedCommitメソッドを不正なコンテキストから呼び出しています。
- ErrRollbackException
-
現在のトランザクションはコミットできないでロールバックしました。この例外が返されたあとも,このプロセスはトランザクション下にあり,グローバルトランザクションの範囲内です。
- ErrHeuristicException
-
dc_trn_chained_commit関数を実行したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミット,あるトランザクションブランチはロールバックしました。この例外は,ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。この例外が返される原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルを参照してください。この例外が返されたあとも,このプロセスはトランザクション下にあり,グローバルトランザクションの範囲内です。
- ErrHazardException
-
グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。この例外が返される原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルを参照してください。この例外が返されたあとも,このプロセスはトランザクション下にあり,グローバルトランザクションの範囲内です。
- ErrNoBeginException
-
コミットまたはロールバック処理は正常に終了しましたが,新しいトランザクションは開始できませんでした。この例外が返されたあと,このプロセスはトランザクション下にありません。
- ErrRollbackNoBeginException
-
コミットしようとしたトランザクションは,コミットできないでロールバックしました。新しいトランザクションは開始できませんでした。この例外が返されたあと,このプロセスはトランザクション下にありません。
- ErrHeuristicNoBeginException
-
dc_trn_chained_commit関数を実行したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミット,あるトランザクションブランチはロールバックしました。この例外は,ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。この例外が返される原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルを参照してください。新しいトランザクションは開始できませんでした。この例外が返されたあと,このプロセスはトランザクション下にありません。
- ErrHazardNoBeginException
-
グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。この例外が返される原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。この例外が返されたあと,このプロセスはトランザクション下にありません。
- ErrNoBufsException
-
メモリ不足が発生しました。
- ErrNotUpException
-
TP1/Serverが稼働していません。
- ErrTimedOutException
-
タイムアウトが発生しました。
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrConnfreeException
-
CUP実行プロセス側から常設コネクションが解放されました。
- ErrNetDownException
-
ネットワーク障害が発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
●trnChainedRollback
public void trnChainedRollback()
throws ErrProtoException,
ErrHeuristicException,
ErrHazardException,
ErrNoBeginException,
ErrHeuristicNoBeginException,
ErrHazardNoBeginException,
ErrNoBufsException,
ErrNotUpException,
ErrTimedOutException,
ErrIOErrException,
ErrConnfreeException,
ErrNetDownException,
ErrSyserrExceptionトランザクションをロールバックします。
trnChainedRollbackメソッドが正常終了すると,新しいグローバルトランザクションが発生し,以降呼び出すメソッドは新しいグローバルトランザクションの範囲になります。
- パラメタ
-
なし。
- 戻り値
-
なし。
- 例外
-
- ErrProtoException
-
trnChainedRollbackメソッドを不正なコンテキストから呼び出しています。
- ErrHeuristicException
-
dc_trn_chained_rollback関数を実行したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミット,あるトランザクションブランチはロールバックしました。この例外は,ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。この例外が返される原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルを参照してください。この例外が返されたあとも,このプロセスはトランザクション下にあり,グローバルトランザクションの範囲内です。
- ErrHazardException
-
グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。この例外が返される原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルを参照してください。この例外が返されたあとも,このプロセスはトランザクション下にあり,グローバルトランザクションの範囲内です。
- ErrNoBeginException
-
コミットまたはロールバック処理は正常に終了しましたが,新しいトランザクションは開始できませんでした。この例外が返されたあと,このプロセスはトランザクション下にありません。
- ErrHeuristicNoBeginException
-
dc_trn_chained_rollback関数を実行したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミット,あるトランザクションブランチはロールバックしました。この例外は,ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。この例外が返される原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。この例外が返されたあと,このプロセスはトランザクション下にありません。
- ErrHazardNoBeginException
-
グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。この例外が返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。この例外が返されたあと,このプロセスはトランザクション下にありません。
- ErrNoBufsException
-
メモリ不足が発生しました。
- ErrNotUpException
-
TP1/Serverが稼働していません。
- ErrTimedOutException
-
タイムアウトが発生しました。
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrConnfreeException
-
CUP実行プロセス側から常設コネクションが解放されました。
- ErrNetDownException
-
ネットワーク障害が発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
●trnUnchainedCommit
public void trnUnchainedCommit()
throws ErrProtoException,
ErrRollbackException,
ErrHeuristicException,
ErrHazardException,
ErrNoBufsException,
ErrNotUpException,
ErrTimedOutException,
ErrIOErrException,
ErrConnfreeException,
ErrNetDownException,
ErrSyserrExceptionトランザクションの同期点を取得します。
trnUnchainedCommitメソッドが正常に終了すると,グローバルトランザクションは終了します。グローバルトランザクションの範囲外からは,SPPをトランザクションとして実行できません。
- パラメタ
-
なし。
- 戻り値
-
なし。
- 例外
-
- ErrProtoException
-
trnUnchainedCommitメソッドを不正なコンテキストから呼び出しています。
- ErrRollbackException
-
現在のトランザクションは,コミットできないでロールバックしました。プロセスはトランザクションの範囲外です。
- ErrHeuristicException
-
dc_trn_unchained_commit関数を実行したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミット,あるトランザクションブランチはロールバックしました。この例外は,ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。この例外が返される原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルを参照してください。この例外が返されたあと,このプロセスはトランザクション下にありません。プロセスはグローバルトランザクションの範囲外です。
- ErrHazardException
-
グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。この例外が返される原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルを参照してください。この例外が返されたあと,このプロセスはトランザクション下にありません。プロセスはグローバルトランザクションの範囲外です。
- ErrNoBufsException
-
メモリ不足が発生しました。
- ErrNotUpException
-
TP1/Serverが稼働していません。
- ErrTimedOutException
-
タイムアウトが発生しました。
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrConnfreeException
-
CUP実行プロセス側から常設コネクションが解放されました。
- ErrNetDownException
-
ネットワーク障害が発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
●trnUnchainedRollback
public void trnUnchainedRollback()
throws ErrProtoException,
ErrHeuristicException,
ErrHazardException,
ErrNoBufsException,
ErrNotUpException,
ErrTimedOutException,
ErrIOErrException,
ErrConnfreeException,
ErrNetDownException,
ErrSyserrExceptionトランザクションをロールバックします。
trnUnchainedRollbackメソッドを呼び出すと,グローバルトランザクションは終了します。グローバルトランザクションの範囲外からは,SPPをトランザクションとして実行できません。
- パラメタ
-
なし。
- 戻り値
-
なし。
- 例外
-
- ErrProtoException
-
trnUnchainedRollbackメソッドを不正なコンテキストから呼び出しています。
- ErrHeuristicException
-
dc_trn_unchained_rollback関数を実行したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミット,あるトランザクションブランチはロールバックしました。この例外は,ヒューリスティック決定の結果がグローバルトランザクションの同期点の結果と一致しない場合に返されます。この例外が返される原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルを参照してください。この例外が返されたあと,このプロセスはトランザクション下にありません。プロセスはグローバルトランザクションの範囲外です。
- ErrHazardException
-
グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。この例外が返される原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,TP1/Serverのメッセージログファイルを参照してください。この例外が返されたあと,このプロセスはトランザクション下にありません。プロセスはグローバルトランザクションの範囲外です。
- ErrNoBufsException
-
メモリ不足が発生しました。
- ErrNotUpException
-
TP1/Serverが稼働していません。
- ErrTimedOutException
-
タイムアウトが発生しました。
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrConnfreeException
-
CUP実行プロセス側から常設コネクションが解放されました。
- ErrNetDownException
-
ネットワーク障害が発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
●trnInfo
public boolean trnInfo()
trnInfoメソッドを呼び出したTP1Clientオブジェクトが,現在トランザクションとして稼働しているかどうかを報告します。このメソッドは内部の変数を参照するだけで,rapサーバとは通信しません。
- パラメタ
-
なし。
- 戻り値
-
- true
-
trnInfoメソッドを呼び出したTP1Clientオブジェクトは,トランザクションの範囲内にあります。
- false
-
trnInfoメソッドを呼び出したTP1Clientオブジェクトは,トランザクションの範囲外にあります。
- 例外
-
なし。
●getTrnID
public void getTrnID(byte[] gid,byte[] bid)
throws ErrInvalidArgsException,
ErrProtoException現在のトランザクショングローバル識別子,およびトランザクションブランチ識別子を取得します。このメソッドは内部の変数を参照するだけで,rapサーバとは通信しません。
現在のトランザクショングローバル識別子,およびトランザクションブランチ識別子は,次に示すメソッドを呼び出してトランザクションが起動したときに,TP1/Serverが割り当てたものです。
-
trnBeginメソッド
-
trnChainedCommitメソッド
-
trnChainedRollbackメソッド
- パラメタ
-
- gid
-
トランザクショングローバル識別子を格納する16バイト以上のbyte型配列を指定します。
- bid
-
トランザクションブランチ識別子を格納する16バイト以上のbyte型配列を指定します。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
- ErrProtoException
-
getTrnIDメソッドを不正なコンテキストから呼び出しています。
●getRpcServicePrio
public int getRpcServicePrio()
setRpcServicePrioメソッドで設定した,サービス要求のスケジュールプライオリティを取得します。
このメソッドが取得するスケジュールプライオリティの値は,CUPが再びsetRpcServicePrioメソッドを呼び出すか,またはrpcCloseメソッドを呼び出すまで変わりません。
次に示す場合,getRpcServicePrioメソッドは省略時解釈値である4を取得します。
-
CUPでsetRpcServicePrioメソッドを呼び出していない場合
-
setRpcServicePrioメソッドの引数prioに0を設定して呼び出した場合
-
rpcCloseメソッドを呼び出した場合
- パラメタ
-
なし。
- 戻り値
-
setRpcServicePrioメソッドで設定したスケジュールプライオリティを,1〜8までの整数で取得します。
- 例外
-
なし。
●cltReceive
public void cltReceive(byte[] buff,
int[] recvleng,
int timeout,
int flags)
throws ErrInvalidArgsException,
ErrProtoException,
ErrNetDownException,
ErrTimedOutException,
ErrSyserrException,
ErrInvalidPortException,
ErrConnfreeExceptionMHPが送信したメッセージを受信します。
cltReceiveメソッドを実行する場合,TP1/Client/J環境定義のdcsndrcvtypeオペランドにDCCLT_ONEWAY_RCVまたはDCCLT_SNDRCVを指定して,rpcOpenメソッドをあらかじめ実行しておく必要があります。
- パラメタ
-
- buff
-
受信したメッセージを格納する領域を指定します。recvlengで指定する長さ以上の領域を指定してください。メソッド実行後は受信したメッセージが返されます。
- recvleng
-
recvleng[0]に受信するメッセージの長さを指定します。メソッド実行後は受信したメッセージの長さが返されます。
- timeout
-
メッセージ受信時の最大待ち時間を,-1から65535までの整数(単位:秒)で指定します。
-1を指定した場合は,メッセージを受信するまで無制限に待ちます。
0を指定した場合は,メッセージの受信を待ちません。受信するメッセージがなかった場合は,ErrTimedOutExceptionが返されます。
1から65535を指定した場合は,指定した秒数だけメッセージの受信を待ちます。指定した秒数を過ぎてもメッセージを受信できない場合は,ErrTimedOutExceptionが返されます。
- flags
-
メッセージ受信後に,コネクションを解放するかどうかを指定します。
DCNOFLAGS:メッセージ受信後,コネクションを解放しません。
DCNOFLAGSを指定した場合は,障害時を除き,rpcCloseメソッドを実行するまでコネクションを解放しません。
DCCLT_RCV_CLOSE:メッセージ受信後,コネクションを解放します。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
- ErrProtoException
-
rpcOpenメソッドが実行されていません。または,rpcOpenメソッドは実行されていますが,TP1/Client/J環境定義のdcsndrcvtypeオペランドにDCCLT_ONEWAY_RCVもしくはDCCLT_SNDRCVを指定していません。
- ErrNetDownException
-
ネットワーク障害が発生しました。
- ErrTimedOutException
-
メッセージ受信時にタイムアウトしました。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrInvalidPortException
-
この例外は,TP1/Client/J環境定義のdcsockopenatrcvオペランドにYを指定し,dcrcvportオペランドに指定したポートがすでに使用中の場合に発生します。dcsockopenatrcvオペランドにNを指定した場合は,rpcOpenメソッドがErrFatalExceptionを返します。
- ErrConnfreeException
-
MHPからコネクションが解放されました。
- 注意事項
-
cltReceiveメソッドは,次に示す場合にCUPに制御を戻します。
-
MHPからrecvleng引数で指定した長さ分のメッセージを受信した場合
-
MHPからのメッセージ受信時に,タイムアウトが発生した場合
-
MHPからコネクションが解放された場合
-
ネットワーク障害が発生した場合
cltReceiveメソッドの発行時に,MHPからコネクションが解放された場合,ErrConnfreeExceptionでエラーリターンします。
-
●cltSend
public void cltSend(byte[] buff,
int sendleng,
String hostname,
int portnum,
int flags)
throws ErrInvalidArgsException,
ErrProtoException,
ErrNetDownException,
ErrSyserrException,
ErrHostUndefException,
ErrInvalidPortException,
ErrConnRefusedExceptionMHPへメッセージを送信します。
cltSendメソッドを実行する場合,TP1/Client/J環境定義のdcsndrcvtypeオペランドにDCCLT_ONEWAY_SNDまたはDCCLT_SNDRCVを指定して,rpcOpenメソッドをあらかじめ実行しておく必要があります。
- パラメタ
-
- buff
-
送信するメッセージが格納されている領域を指定します。sendlengで指定する長さ以上の領域を指定してください。
- sendleng
-
送信するメッセージの長さを指定します。
- hostname
-
コネクションが確立されていない場合,接続するMHPが存在するノードのホスト名を指定します。
nullを指定した場合は,rpcOpenメソッドを実行したときに取得したTP1/Client/J環境定義のdcsndhostオペランドの内容を参照します。
また,ホスト名として,10進ドット記法のIPアドレスを指定することもできます。
コネクションが確立されている場合,この引数は無視されます。
- portnum
-
コネクションが確立されていない場合,接続するMHPのポート番号を,0から65535までの整数で指定します。
0を指定すると,rpcOpenメソッドを実行したときに取得したTP1/Client/J環境定義のdcsndportオペランドの内容を参照します。
コネクションが確立されている場合,この引数は無視されます。
- flags
-
メッセージ送信後にコネクションを解放するかどうかを指定します。
DCNOFLAGS:メッセージ送信後,コネクションを解放しません。
DCNOFLAGSを指定した場合は,障害時を除き,rpcCloseメソッドを実行するまでコネクションを解放しません。
DCCLT_SND_CLOSE:メッセージ送信後,コネクションを解放します。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
- ErrProtoException
-
rpcOpenメソッドが実行されていません。または,rpcOpenメソッドは実行されていますが,TP1/Client/J環境定義のdcsndrcvtypeオペランドにDCCLT_ONEWAY_SNDもしくはDCCLT_SNDRCVを指定していません。
- ErrNetDownException
-
ネットワーク障害が発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrHostUndefException
-
hostname引数の指定に誤りがあります。または,hostname引数およびTP1/Client/J環境定義のdcsndhostオペランドの両方にホスト名が指定されていません。
- ErrInvalidPortException
-
portnum引数の指定に誤りがあります。
- ErrConnRefusedException
-
MHPに対するコネクションの確立要求が拒否されました(接続を待ち受けていないポートに対してコネクションを確立しようとしました)。
- 注意事項
-
cltSendメソッドを実行してメッセージを送信しているときに,MHPからコネクションが解放されると,次に実行するcltSendメソッドは正常終了または異常終了します。正常終了した場合は,その次に実行するcltSendメソッドで初めて異常終了します。そのため,CUPを作成するときは注意してください。
●cltAssemSend
public void cltAssemSend(byte[] buff,
int sendleng,
String hostname,
int portnum,
int timeout,
int flags)
throws ErrInvalidArgsException,
ErrProtoException,
ErrNetDownException,
ErrSyserrException,
ErrHostUndefException,
ErrInvalidPortException,
ErrConnRefusedException,
ErrTimedOutException,
ErrConnfreeException,
ErrInvalidMessageException,
ErrCollisionMessageException受信メッセージの組み立て機能を使用してメッセージを送信します。
cltAssemSendメソッドを実行する場合,TP1/Client/J環境定義のdcsndrcvtypeオペランドにDCCLT_ONEWAY_SNDまたはDCCLT_SNDRCVを指定して,rpcOpenメソッドをあらかじめ実行しておく必要があります。
受信メッセージの組み立て機能を使用した場合,メッセージの先頭4バイトにメッセージ長(4+sendleng引数の指定値)を付けて,buff[0]〜buff[sendleng−1]の長さのメッセージを送信します。
相手システムとのコネクションが確立されていない場合,hostname引数およびportnum引数の指定に従ってコネクションを確立し,メッセージを送信します。
- パラメタ
-
- buff
-
送信するメッセージが格納されている領域を指定します。sendleng引数で指定する長さ以上の領域を指定してください。
- sendleng
-
送信するメッセージの長さを指定します。
- hostname
-
コネクションが確立されていない場合,接続する相手システムのホスト名を指定します。
nullを指定した場合は,rpcOpenメソッドを実行したときに取得したTP1/Client/J環境定義のdcsndhostオペランドの内容を参照します。
ホスト名として,10進ドット記法のIPアドレスを指定することもできます。コネクションが確立されている場合,この引数は無視されます。
- portnum
-
コネクションが確立されていない場合,接続する相手システムのポート番号を,0から65535までの整数で指定します。
0を指定すると,rpcOpenメソッドを実行したときに取得したTP1/Client/J環境定義のdcsndportオペランドの内容を参照します。コネクションが確立されている場合,この引数は無視されます。
- timeout
-
予約引数です。指定した値は無視されます。
- flags
-
メッセージ送信後にコネクションを解放するかどうかを指定します。
DCNOFLAGS:メッセージ送信後,コネクションを解放しません。
DCNOFLAGSを指定した場合は,障害時を除き,rpcCloseメソッドを実行するまでコネクションを解放しません。
DCCLT_SND_CLOSE:メッセージ送信後,コネクションを解放します。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
- ErrProtoException
-
rpcOpenメソッドが実行されていません。または,rpcOpenメソッドは実行されていますが,TP1/Client/J環境定義のdcsndrcvtypeオペランドでDCCLT_ONEWAY_SNDまたはDCCLT_SNDRCVを指定していません。
- ErrNetDownException
-
ネットワーク障害が発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrHostUndefException
-
接続する相手システムのホスト名に誤りがあります。または,hostname引数およびTP1/Client/J環境定義のdcsndhostオペランドの両方にホスト名が指定されていません。
- ErrInvalidPortException
-
portnum引数の指定に誤りがあります。
- ErrConnRefusedException
-
相手システムに対するコネクションの確立要求が拒否されました(接続を待ち受けていないポートに対してコネクションを確立しようとしました)。
- ErrTimedOutException
-
応答メッセージの受信時に,タイムアウトが発生しました。コネクションは解放されます。
- ErrConnfreeException
-
相手システムからコネクションが解放されました。
- ErrInvalidMessageException
-
不正なメッセージを受信しました。
- ErrCollisionMessageException
-
送受信メッセージの衝突が発生しました。
- 注意事項
-
cltAssemSendメソッドを実行してメッセージを送信するときに,相手システムからコネクションが解放されると,次に実行するcltAssemSendメソッドは正常終了または異常終了します。正常終了した場合は,その次に実行するcltAssemSendメソッドで初めて異常終了します。そのため,CUPを作成するときは注意してください。
●cltAssemReceive
public void cltAssemReceive(byte[] buff,
int[] recvleng,
int timeout,
int flags)
throws ErrInvalidArgsException,
ErrProtoException,
ErrNetDownException,
ErrTimedOutException,
ErrSyserrException,
ErrInvalidPortException,
ErrConnfreeException,
ErrInvalidMessageException,
ErrBufferOverflowException受信メッセージの組み立て機能を使用してメッセージを受信します。
cltAssemReceiveメソッドを実行する場合,TP1/Client/J環境定義のdcsndrcvtypeオペランドにDCCLT_ONEWAY_RCVまたはDCCLT_SNDRCVを指定して,rpcOpenメソッドをあらかじめ実行しておく必要があります。
受信メッセージの組み立て機能を使用した場合,メッセージの先頭4バイトは,buff引数に指定されたバッファに格納されません。
このメソッドが正常終了した場合,recvleng[0]の長さのユーザデータを含むメッセージを受信し,ユーザデータがbuff[0]〜buff[recvleng[0]−1]に格納されます。
- パラメタ
-
- buff
-
受信したメッセージを格納する領域を指定します。受信するメッセージの長さ以上の領域を指定してください。
- recvleng
-
メソッド実行後に,受信したメッセージの長さがrecvleng[0]に返されます。
- timeout
-
メッセージ受信時の最大待ち時間を,-1から65535までの整数(単位:秒)で指定します。
-1を指定した場合は,メッセージを受信するまで無制限に待ちます。
0を指定した場合は,メッセージの受信を待ちません。受信するメッセージがなかった場合は,ErrTimedOutExceptionが返されます。
1から65535を指定した場合は,指定した秒数だけメッセージの受信を待ちます。指定した秒数を過ぎてもメッセージを受信できない場合は,ErrTimedOutExceptionが返されます。
- flags
-
メッセージを受信後に,コネクションを解放するかどうかを指定します。
DCNOFLAGS:メッセージ受信後,コネクションを解放しません。
DCNOFLAGSを指定した場合は,障害時を除き,rpcCloseメソッドを実行するまでコネクションを解放しません。
DCCLT_RCV_CLOSE:メッセージ受信後,コネクションを解放します。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
- ErrProtoException
-
rpcOpenメソッドが実行されていません。または,rpcOpenメソッドは実行されていますが,TP1/Client/J環境定義のdcsndrcvtypeオペランドでDCCLT_ONEWAY_RCVまたはDCCLT_SNDRCVを指定していません。
- ErrNetDownException
-
ネットワーク障害が発生しました。
- ErrTimedOutException
-
メッセージの受信時にタイムアウトが発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
- ErrInvalidPortException
-
この例外は,TP1/Client/J環境定義のdcsockopenatrcvオペランドにYを指定し,dcrcvportオペランドに指定したポートがすでに使用中の場合に発生します。dcsockopenatrcvオペランドにNを指定した場合は,rpcOpenメソッドがErrFatalExceptionを返します。
- ErrConnfreeException
-
相手システムからコネクションが解放されました。
- ErrInvalidMessageException
-
不正なメッセージを受信しました。
- ErrBufferOverflowException
-
buff引数の指定値を超える長さのメッセージを受信しました。
- 注意事項
-
cltAssemReceiveメソッドは,次に示す場合にCUPに制御を戻します。
-
メッセージ受信が完了した場合
-
buff引数の指定値を超える長さのメッセージを受信した場合
-
ネットワーク障害が発生した場合
-
メッセージ受信時に,タイムアウトが発生した場合
-
相手システムからコネクションが解放された場合
-
不正なメッセージ長のメッセージを受信した場合
-
不正なセグメント情報のメッセージを受信した場合
cltAssemReceiveメソッドの発行時に,相手システムからコネクションが解放された場合,ErrConnfreeExceptionでエラーリターンします。
-
●setConnectInformation
public void setConnectInformation(byte[] inf,
short inf_len)
throws ErrInvalidArgsException端末識別情報を設定します。
このメソッドに指定した端末識別情報は,TP1/Client/J環境定義のdchostオペランドにDCCM3論理端末のホスト名を,dchostオペランドまたはdcrapportオペランドにDCCM3論理端末のポート番号を指定し,次のどちらかの方法でDCCM3論理端末との常設コネクションを確立した場合に有効となります。
-
openConnectionメソッドを呼び出します。引数有りのopenConnectionメソッドの場合,引数hostにDCCM3論理端末のホスト名,引数portにDCCM3論理端末のポート番号を指定します。
-
TP1/Client/J環境定義のdcrapautoconnectオペランドにYを指定し,rpcCallメソッドを呼び出します。
このメソッドを呼び出した場合,TP1/Client/J環境定義のdccltconnectinfオペランドに指定した端末識別情報は,再びrpcOpenメソッドを呼び出すまで無視されます。
なお,このメソッドに指定した端末識別情報は,DCCM3論理端末との常設コネクション確立時に認識されます。このメソッドを複数回呼び出した場合は,DCCM3論理端末との常設コネクションを確立する直前に指定した端末識別情報が有効となります。
また,ネームサービスを使用したRPC,またはスケジューラダイレクト機能を使用したRPCの場合は,このメソッドで指定した端末識別情報は無視されます。
- パラメタ
-
- inf
-
端末識別情報として,DCCM3論理端末の論理端末名称を64バイト以内のEBCDIKコードで指定します。ただし,DCCM3側では先頭8バイト目までに指定した値だけが有効になり,9バイト目以降に指定した値は無視されます。
- inf_len
-
端末識別情報長を指定します。1から64までの範囲のバイト長を指定します。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
引数の指定に誤りがあります。
●acceptNotification
public void acceptNotification(
byte[] inf,
int[] inf_len,
int port,
int timeout,
byte[] hostname,
byte[] nodeid)
throws ErrInvalidArgsException,
ErrProtoException,
ErrIOErrException,
ErrSecurityException,
ErrInvalidPortException,
ErrTimedOutException,
ErrNetDownException,
ErrInvalidMessageException,
ErrAcceptCanceledException,
ErrReplyTooBigException,
ErrVersionException,
ErrSyserrExceptionサーバ側の関数(dc_rpc_cltsend関数)によって通知されるメッセージを,timeout引数に指定した時間まで待ち続けます。メッセージを受信した時点でCUPに制御を戻し,通知メッセージ,通知メッセージ長,通知元サーバのホスト名,および通知元サーバのノード識別子を返します。
- パラメタ
-
- inf
-
サーバからの通知メッセージを格納する領域を指定します。
メソッドが正常終了した場合,サーバからの通知メッセージが格納されます。
- inf_len
-
サーバからの通知メッセージを格納する領域の長さ(inf引数の長さ)を指定します。0からDCRPC_MAX_MESSAGE_SIZEの範囲で指定します。
ただし,TP1/Client/J環境定義dccltrpcmaxmsgsizeに2以上を指定した場合,指定できる値の最大値は,DCRPC_MAX_MESSAGE_SIZEの値(1メガバイト)ではなく,TP1/Client/J環境定義dccltrpcmaxmsgsizeに指定した値になります。
メソッドが正常終了した場合,サーバからの通知メッセージ長が格納されます。
- port
-
サーバからの通知メッセージを受信するポート番号を,5001から65535の範囲で指定します。
同一マシン内で,複数のプロセス,または複数のスレッドを同時に実行する場合,port引数にはそれぞれ異なるポート番号を指定してください。また,port引数に指定できるポート番号でも,OS,またはほかのプログラムが使用するポート番号は指定しないでください。指定した場合,応答データを正しく受信できないことがあります。なお,OSが使用するポート番号は,OSごとに異なります。OSが使用するポート番号については,ご利用のOSの関連ドキュメントを参照してください。
- timeout
-
タイムアウト値を,0から65535(単位:秒)の範囲で指定します。0を指定した場合,無限に待ち続けます。
- hostname
-
通知してきたサーバのホスト名を格納する領域を指定します。256バイト以上を指定してください。
メソッドが正常終了した場合,通知元サーバのホスト名が格納されます。TP1/Client/Jは,java.net.InetAddressクラスのgetHostNameメソッドで通知元サーバのIPアドレスからホスト名を取得し,プラットフォームのデフォルトの文字セットを使用して,取得したホスト名をバイト配列に変換します。この結果が,hostnameに格納されます。通知元サーバのIPアドレスからホスト名への変換に失敗した場合,10進ドット記法(例:10.209.15.124)のIPアドレスをhostnameに格納します。
nullを指定した場合,通知してきたサーバのホスト名を格納しません。
- nodeid
-
通知してきたサーバのノード識別子を格納する領域を指定します。8バイト以上を指定してください。
メソッドが正常終了した場合,通知元サーバのノード識別子が格納されます。ノード識別子のフォーマットは,次のとおりです。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
メソッドの引数の指定に誤りがあります。
- ErrProtoException
-
rpcOpenメソッドが実行されていません。
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrSecurityException
-
セキュリティ例外が発生しました。
- ErrInvalidPortException
-
port引数で指定したポート番号は使用中です。
- ErrClientTimedOutException
-
TP1/Client/Jでタイムアウトが発生しました。
- ErrNetDownAtClientException
-
TP1/ServerとCUPの間でネットワーク障害が発生しました。
- ErrInvalidMessageException
-
不正なメッセージを受信しました。
- ErrAcceptCanceledException
-
一方通知受信待ち状態がcancelNotificationメソッドで解除されました。このとき,inf引数,inf_len引数,およびhostname引数にはすでに値が設定されています。nodeid引数には,先頭から8バイト目まで0で初期化された値が設定されます。
- ErrReplyTooBigException
-
受信したメッセージが,CUPで用意した領域に収まりません。収まらないメッセージを切り捨てました。このとき,hostname引数およびnodeid引数には,すでに値を設定されています。
- ErrVersionException
-
通知元サーバのバージョンが不正です。
- ErrSyserrException
-
システムエラーが発生しました。
●cancelNotification
public void cancelNotification(
byte[] inf,
int inf_len,
String hostname,
int port)
throws ErrInvalidArgsException,
ErrProtoException,
ErrIOErrException,
ErrInvalidPortException,
ErrTimedOutException,
ErrNetDownException,
ErrHostUndefException,
ErrSyserrExceptionサーバからの一方通知受信待ち状態(acceptNotificationメソッド,またはacceptNotificationChainedメソッドの発行)を解除します。解除するときに,inf引数に指定したメッセージを,一方通知受信待ち状態のCUPに通知できます。
- パラメタ
-
- inf
-
CUPに通知するメッセージを指定します。
- inf_len
-
CUPに通知するメッセージ長(inf引数の長さ)を指定します。0からDCRPC_MAX_MESSAGE_SIZEの範囲で指定します。0を指定した場合はCUPにメッセージを通知しません。
ただし,TP1/Client/J環境定義dccltrpcmaxmsgsizeに2以上を指定した場合,指定できる値の最大値はDCRPC_MAX_MESSAGE_SIZEの値(1メガバイト)ではなく,TP1/Client/J環境定義dccltrpcmaxmsgsizeに指定した値になります。
- hostname
-
一方通知受信待ち状態のCUPが存在するホスト名を指定します。ホスト名として,10進ドット記法(例:10.209.15.124)のIPアドレスを指定することもできます。
- port
-
一方通知受信待ち状態のCUPのポート番号を,5001から65535の範囲で指定します
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
メソッドの引数の指定に誤りがあります。
- ErrProtoException
-
rpcOpenメソッドが実行されていません。
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrInvalidPortException
-
port引数で指定したポート番号が不正です。
- ErrClientTimedOutException
-
TP1/Client/Jでタイムアウトが発生しました。
- ErrNetDownAtClientException
-
CUP間でネットワーク障害が発生しました。
- ErrHostUndefException
-
hostname引数で指定したホスト名が不正です。
- ErrSyserrException
-
システムエラーが発生しました。
●openNotification
public void openNotification(int port)
throws ErrInvalidArgsException,
ErrProtoException,
ErrInvalidPortException,
ErrNetDownException,
ErrSyserrException一方通知連続受信機能を使用するための環境を作成します。このメソッドは,closeNotificationメソッドと対で発行します。このメソッドが正常終了した場合は,必ずcloseNotificationメソッドを発行してください。
- パラメタ
-
- port
-
サーバからの通知メッセージを受信するポート番号を,5001から65535の範囲で指定します。
同一マシン内で,複数のプロセス,または複数のスレッドを同時に実行する場合,port引数にはそれぞれ異なるポート番号を指定してください。また,port引数に指定できるポート番号でも,OS,またはほかのプログラムが使用するポート番号は指定しないでください。指定した場合,応答データを正しく受信できないことがあります。なお,OSが使用するポート番号は,OSごとに異なります。OSが使用するポート番号については,ご利用のOSの関連ドキュメントを参照してください。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
メソッドの引数の指定に誤りがあります。
- ErrProtoException
-
rpcOpenメソッドが実行されていない,またはopenNotificationメソッドがすでに実行されています。
- ErrInvalidPortException
-
port引数で指定したポート番号は,すでに使用されています。
- ErrNetDownAtClientException
-
TP1/ServerとCUPの間でネットワーク障害が発生しました。
- ErrSyserrException
-
システムエラーが発生しました。
●acceptNotificationChained
public void acceptNotificationChained(
byte[] inf,
int[] inf_len,
int timeout,
byte[] hostname,
byte[] nodeid)
throws ErrInvalidArgsException,
ErrProtoException,
ErrIOErrException,
ErrSecurityException,
ErrTimedOutException,
ErrNetDownException,
ErrInvalidMessageException,
ErrAcceptCanceledException,
ErrReplyTooBigException,
ErrVersionException,
ErrSyserrExceptionサーバ側の関数(dc_rpc_cltsend関数)によって通知されるメッセージを,timeout引数で指定した時間まで待ち続けます。メッセージを受信した時点でCUPに制御を戻し,通知メッセージ,通知メッセージ長,通知元サーバのホスト名,および通知元サーバのノード識別子を返します。このメソッドを発行するときは,あらかじめopenNotificationメソッドを発行しておく必要があります。このメソッドは,openNotificationメソッドからcloseNotificationメソッドまでの間で発行できます。
- パラメタ
-
- inf
-
サーバからの通知メッセージを格納する領域を指定します。
メソッドが正常終了した場合,サーバからの通知メッセージが格納されます。
- inf_len
-
サーバからの通知メッセージを格納する領域の長さ(inf引数の長さ)を指定します。0からDCRPC_MAX_MESSAGE_SIZEの範囲で指定します。
ただし,TP1/Client/J環境定義dccltrpcmaxmsgsizeに2以上を指定した場合,指定できる値の最大値はDCRPC_MAX_MESSAGE_SIZEの値(1メガバイト)ではなく,TP1/Client/J環境定義dccltrpcmaxmsgsizeに指定した値になります。
メソッドが正常終了した場合,サーバからの通知メッセージ長が格納されます。
- timeout
-
タイムアウト値を,0から65535(単位:秒)の範囲で指定します。0を指定した場合,無限に待ち続けます。
- hostname
-
通知してきたサーバのホスト名を格納する領域を指定します。256バイト以上を指定してください。
メソッドが正常終了した場合,通知元サーバのホスト名が格納されます。
TP1/Client/Jは,java.net.InetAddressクラスのgetHostNameメソッドで通知元サーバのIPアドレスからホスト名を取得し,プラットフォームのデフォルトの文字セットを使用して,取得したホスト名をバイト配列に変換します。この結果が,hostnameに格納されます。通知元サーバのIPアドレスからホスト名への変換に失敗した場合,10進ドット記法(例:10.209.15.124)のIPアドレスをhostnameに格納します。
nullを指定した場合,通知してきたサーバのホスト名を格納しません。
- nodeid
-
通知してきたサーバのノード識別子を格納する領域を指定します。8バイト以上を指定してください。
メソッドが正常終了した場合,通知元サーバのノード識別子が格納されます。ノード識別子のフォーマットは,次のとおりです。
- 戻り値
-
なし。
- 例外
-
- ErrInvalidArgsException
-
メソッドの引数の指定に誤りがあります。
- ErrProtoException
-
openNotificationメソッドが実行されていません。
- ErrIOErrException
-
何らかの入出力例外が発生しました。
- ErrSecurityException
-
セキュリティ例外が発生しました。
- ErrClientTimedOutException
-
TP1/Client/Jでタイムアウトが発生しました。
- ErrNetDownAtClientException
-
TP1/ServerとCUPの間でネットワーク障害が発生しました。
- ErrInvalidMessageException
-
不正なメッセージを受信しました。
- ErrAcceptCanceledException
-
一方通知受信待ち状態がcancelNotificationメソッドによって解除されました。このとき,inf引数,inf_len引数,およびhostname引数には,すでに値が設定されています。nodeid引数は,先頭から8バイト目まで0で初期化された値が設定されます。
- ErrReplyTooBigException
-
受信したメッセージが,CUPで用意した領域に収まりません。収まらないメッセージは切り捨てました。このとき,hostname引数およびnodeid引数にはすでに値が設定されています。
- ErrVersionException
-
通知元サーバのバージョンが不正です。
- ErrSyserrException
-
システムエラーが発生しました。
●closeNotification
public void closeNotification()
throws ErrNetDownException,
ErrSyserrException一方通知連続受信機能を使用するための環境を削除します。このメソッドは,openNotificationメソッドと対で発行します。openNotificationメソッドが正常終了した場合は,必ずこのメソッドを発行してください。
- パラメタ
-
なし。
- 戻り値
-
なし。
- 例外
-
- ErrNetDownAtClientException
-
TP1/ServerとCUPの間でネットワーク障害が発生しました。
- ErrSyserrException
-
システムエラーが発生しました。