jp.co.melco.preservcs
クラス PsvWTclClient

java.lang.Object
  拡張jp.co.melco.preservcs.PsvWTclClient
すべての実装インタフェース:
java.io.Serializable

public class PsvWTclClient
extends java.lang.Object
implements java.io.Serializable

PreSerV WebTcl セッション管理クラスです。

導入されたバージョン:
1.0.0
関連項目:
直列化された形式

フィールドの概要
static short CANCEL_STOCK_SEND_RESPONSE
          ストックしたマクロをキャンセルするモード(現版では廃止しました)
static short CREATE_CLOSE_RESPONSE
          e_closeのレスポンス作成用モード。
static short CREATE_CONNECT_RESPONSE
          e_connectのレスポンス作成用モード。
static short CREATE_PSEUDO_CONNECT_RESPONSE
          e_connect時の詳細なエラーを通知するための特殊モード。
static short CREATE_SEND_DATA_RESPONSE
          e_recvの繰り返し問合せ時のレスポンス作成モード。
static short CREATE_SEND_RESPONSE
          e_sendのレスポンス作成用モード。
static short CREATE_STOCK_SEND_RESPONSE
          ストックしたマクロコマンドでe_sendへのレスポンスを作成するモード。
static short NOP_STOCK_SEND_RESPONSE
          ストックしたマクロがまだない場合204のレスポンスを出力するモード。
 
メソッドの概要
 boolean checkAskInfo(int aSessionID)
          レスポンスデータのチェック(e_recv用)。
 int clearSessionInfo(int aSessionID)
          WebTclセッション情報のクリア。
 int clearStockCmd(int aSessionID)
          ストックしたコマンドのクリア。
 int clearStockData(int aSessionID)
          ストックしたデータのクリア。
 int createResponseData(int aSessionID, javax.servlet.http.HttpServletResponse aResponse, java.lang.String aData, short mode)
          レスポンスの作成。
 PsvWTclSessionInformation duplicateCheck(PsvWTclHeaderInf aHeadInf)
          同一ホストかつ同一仮想ポート番号からの、複数コネクト時は以前の情報 を取り出します。
 java.lang.String getAppAttribute(int aSessionID, java.lang.String aKey)
          アプリケーション用属性の取り出し。
 java.lang.String getCharEncoding()
          文字エンコード取得。
 PsvWTclHeaderInf getHeaderInformation(javax.servlet.ServletRequest aRequest)
          サーブレット・リクエストからWebTcl関連ヘッダ情報を取り出します。
static PsvWTclClient getInstance()
          インスタンスの生成・取得。
 int getPseudoStatus(int aSessionID)
          偽接続状態の取得。
 int getRefCnt()
          参照数の加算。
 int getSessionID(PsvWTclHeaderInf aHeaderInf)
          WebTclセッションIDの取得・採番。
 void mergeBuddyTable(java.util.Hashtable buddyTable)
          協調関係にあるAPサーバのWebTclセッションIDテーブルをマージ します。
 int registerActionURI(int aSessionID, java.lang.String aActionKeyWord, java.lang.String aActionURI)
          アクションURIの登録。
static void releaseInstance()
          インスタンスの開放。
 void removeAppAttribute(int aSessionID, java.lang.String aKey)
          アプリケーション用属性の削除。
 void saveSessionInfo(javax.servlet.http.HttpSession sess)
          APサーバ間でセッション共有時の保存処理。
 boolean setAppAttribute(int aSessionID, java.lang.String aKey, java.lang.String aValue)
          アプリケーション用属性の設定。
 void setCharEncoding(java.lang.String encoding)
          文字エンコード設定。
 void setLoggerLevel(org.apache.log4j.Logger logger)
          ログレベルの同期設定。
 void setLogLevel(int aLogLevel)
          ログレベル設定。
 int stockResponseCmd(int aSessionID, java.lang.String aData)
          レスポンスコマンドのストック(e_send用)。
 int stockResponseData(int aSessionID, java.lang.String aData)
          レスポンスデータのストック(e_recv用)。
 
クラス java.lang.Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

CREATE_CONNECT_RESPONSE

public static final transient short CREATE_CONNECT_RESPONSE
e_connectのレスポンス作成用モード。

registerActionURLでストックしたアクションキーとアクションのURL をFE-COMへ返信し、登録するレスポンスを作成します。

加工用データは使用しません。

関連項目:
定数フィールド値

CREATE_CLOSE_RESPONSE

public static final transient short CREATE_CLOSE_RESPONSE
e_closeのレスポンス作成用モード。

終了のレスポンスを返信します。加工用データは指定しなくても良く、 終了時にWebTclエンジン側で実行したいコマンドがあれば指定すること も可能です。

※一部APサーバでnull指定時にレスポンスを端折るので、現在は必ず";" (Tclでコマンドの区切りを示すNOPになるコマンド)を送信しています。

関連項目:
定数フィールド値

CREATE_SEND_RESPONSE

public static final transient short CREATE_SEND_RESPONSE
e_sendのレスポンス作成用モード。

加工用データで指定したコマンドを、WebTclエンジンに実行コマンドと して返信しするレスポンスを作成します。

コマンドやデータのストック時は、CREATE_STOCK_SEND_RESPONSEや CREATE_SEND_DATA_RESPONSEを使用してください。

関連項目:
定数フィールド値

CREATE_SEND_DATA_RESPONSE

public static final transient short CREATE_SEND_DATA_RESPONSE
e_recvの繰り返し問合せ時のレスポンス作成モード。

stockResponseDataでストックしておいたデータをe_recvで受信可能なように 返信します。※非同期でデータを返す場合だけ使用してください。

加工用データは使用しません。

関連項目:
定数フィールド値

CREATE_STOCK_SEND_RESPONSE

public static final transient short CREATE_STOCK_SEND_RESPONSE
ストックしたマクロコマンドでe_sendへのレスポンスを作成するモード。

stockResponseCmdでストックしておいたコマンドを返信し、WebTclエンジンの イベントスレッドで実行します。

ストックしたマクロコマンドの最後に加工用データも結合します。

関連項目:
定数フィールド値

CANCEL_STOCK_SEND_RESPONSE

public static final transient short CANCEL_STOCK_SEND_RESPONSE
ストックしたマクロをキャンセルするモード(現版では廃止しました)

関連項目:
定数フィールド値

NOP_STOCK_SEND_RESPONSE

public static final transient short NOP_STOCK_SEND_RESPONSE
ストックしたマクロがまだない場合204のレスポンスを出力するモード。

e_recvからのポーリングリクエストに対する、返信時やストック時に

WebTclコマンドを返す必要がない場合に使用します。 加工用データは使用しません。

関連項目:
定数フィールド値

CREATE_PSEUDO_CONNECT_RESPONSE

public static final transient short CREATE_PSEUDO_CONNECT_RESPONSE
e_connect時の詳細なエラーを通知するための特殊モード。

エラー通知用のTclコマンドを加工前データに指定して、エラーメッセージ

ダイアログ表示コマンドを送信する。

このモード時を判別するため偽接続(pseudoConnect)項目がHTTPヘッダ部に現れる。

エラー通知用のTclコマンド送信後、仮の接続を即時切断する。

関連項目:
定数フィールド値
メソッドの詳細

getInstance

public static PsvWTclClient getInstance()
インスタンスの生成・取得。

このメソッドでインスタンスの自動生成と取得を行います。生成は1イン

スタンスだけです。アプリケーションからコンストラクタは使用しません。

注) 異なるクラスパスからPsvWTclClient.jarをロードすると別インスタン

  スとなります。正常に動作させる為にはアプリケーションで共通のパス

  にJarを配置してください。

戻り値:
PsvWTclClientのインスタンス
導入されたバージョン:
1.0.0

releaseInstance

public static void releaseInstance()
インスタンスの開放。

注)参照数を減算し、参照数が0以下になると、インスタンスをクリアします。


getRefCnt

public int getRefCnt()
参照数の加算。(内部処理用)

戻り値:
加算後の参照数

registerActionURI

public int registerActionURI(int aSessionID,
                             java.lang.String aActionKeyWord,
                             java.lang.String aActionURI)
アクションURIの登録。

e_connectのレスポンス作成時に使用します。 createResponseData(mode=CREATE_COONECT_RESPONSE)を実行する前に、

コールします。

以後のリクエスト時のアクション・キーワードと、アクションの相対的

なパス名を関連付け、アクションマップを作成し、IEアドオンのFE-COM

へレスポンスとして通知します。

アクション・キーワードを""で指定すると、デフォルトのアクションの

パス名の指定と判断します。

以後のリクエスト(e_send)時にFE-COMは、先頭のアクションキーワード

をキーにアクションマップを検索し、対応するパス名をInitActionURL

のホスト名に合成して、リクエストのURLに適用します。

パラメータ:
aSessionID - WebTclセッションID
aActionKeyWord - アクション・キーワード
aActionURI - アクションURI
戻り値:
0:成功、-1:登録失敗(WebTclセッションID不正)、-2:キーワード重複

(注)最低1つのキーワードなしデフォルトのアクションURIの登録が必要です。


createResponseData

public int createResponseData(int aSessionID,
                              javax.servlet.http.HttpServletResponse aResponse,
                              java.lang.String aData,
                              short mode)
レスポンスの作成。

IEアドオンのFE-COMへレスポンスを返信するためのAPIです。

基本的にレスポンス作成時の最後にコールします。

HttpServletReponseのヘッダ部とボディ部にWebTcl独自の形式で、

データを格納します。

リクエストの種別により、ヘッダ部やボディ部の加工方法が違うため

引数modeで処理モードを指定します。

指定値は本クラスの定数として以下のモードを定義しています。

CREATE_CONNECT_RESPONSE:e_connect時のレスポンス作成モード

CREATE_CLOSE_RESPONSE:e_close時のレスポンス作成モード

CREATE_SEND_RESPONSE:e_send時のレスポンス作成モード

CREATE_SEND_DATA_RESPONSE:e_recvの繰り返し問合せ時のレスポ

  ンス作成モード

CREATE_STOCK_SEND_RESPONSE:ストックしたマクロコマンドで

  e_sendへのレスポンスを作成するモード。

NOP_STOCK_SEND_RESPONSE:ストックしたマクロがまだない場合

  204のレスポンスを出力するモード。

CREATE_PSEUDO_CONNECT_RESPONSE:e_connect時に、アプリでエラー

  にして、エラー原因を通知するため、仮の接続(偽接続)を行うモード。

  加工前データで指定したマクロコマンドを実行し、直後に接続を終了します。

  マクロのコマンドの実行が不要な場合は、";"など実行しても影響のない

  マクロコマンドを指定してください。

パラメータ:
aSessionID - WebTclセッションID
aResponse - 出力先レスポンスオブジェクト
aData - 加工用データ
mode - 処理モード。定数値フィールド参照。
戻り値:
0:成功、-1:加工失敗(WebTclセッションID不正)、-2:その他(IOException)

     -3:出力先レスポンスオブジェクトがnull、-4:レスポンスの書き込みでエラー


getSessionID

public int getSessionID(PsvWTclHeaderInf aHeaderInf)
WebTclセッションIDの取得・採番。

e_connect時は新規採番します。その他のケースはヘッダ情報のWebTcl

セッションIDを取り出し、チェックして既存採番であれば返します。

既存採番で無い場合は不正として-1を返します。

パラメータ:
aHeaderInf - ヘッダー情報格納クラス
戻り値:
!=-1:WebTclセッションID、==-1:WebTclセッションID不正

getHeaderInformation

public PsvWTclHeaderInf getHeaderInformation(javax.servlet.ServletRequest aRequest)
サーブレット・リクエストからWebTcl関連ヘッダ情報を取り出します。

パラメータ:
aRequest - サーブレット・リクエスト
戻り値:
!=null:WebTclヘッダ情報格納クラス、==null:ヘッダに必須情報不足

clearSessionInfo

public int clearSessionInfo(int aSessionID)
WebTclセッション情報のクリア。

saveSession=trueの時はセッション情報を未使用としてリセットし、

クリア候補とします。

注)消去は一度連係APサーバにクリア候補を送付してから、次回別リク

  エストの採番のタイミングでクリアとなります。

saveSession=falseの時は直接セッション情報を消去します。

パラメータ:
aSessionID - WebTclセッションID
戻り値:
0:正常にクリアフラグON、-1:セッション情報なし

stockResponseCmd

public int stockResponseCmd(int aSessionID,
                            java.lang.String aData)
レスポンスコマンドのストック(e_send用)。

本メソッドでWebTclコマンドを蓄積し、createResponseData

(mode=CREATE_STOCK_SEND_RESPONSE)で一括してレスポンスとして送信

します。

パラメータ:
aSessionID - WebTclセッションID
aData - ストックコマンド文字列
戻り値:
0:成功、-1:加工失敗(WebTclセッションID不正)、-2:ストックコマンド文字列がnull

stockResponseData

public int stockResponseData(int aSessionID,
                             java.lang.String aData)
レスポンスデータのストック(e_recv用)。

本メソッドでデータとしての文字列を蓄積し、createResponseData

(mode=CREATE_SEND_DATA_RESPONSE)で一括してレスポンスとして送信

します。

受信側のe_recvではレスポンスの文字列は、変数に代入して参照し、

直接コマンドとして実行されることはありません。

パラメータ:
aSessionID - WebTclセッションID
aData - ストックデータ文字列
戻り値:
0:成功、-1:加工失敗(WebTclセッションID不正)

checkAskInfo

public boolean checkAskInfo(int aSessionID)
レスポンスデータのチェック(e_recv用)。

stockResponseDataメソッドでストックしたデータがあるかチェックします。

e_recvのポーリングリクエスト、FE-COM.AskRequestURLで指定されるサーブ

レットは、まずこのメソッドでデータがあることを確認し、データがあれ

ば、createResponseDataをmode=CREATE_SEND_DATA_RESPONSEで実行し、 無ければmode=NOP_STOCK_SEND_RESPONSEで実行してください。

後者の場合、e_recvの待機時間内再度ポーリングリクエストが送信されて

きます。

パラメータ:
aSessionID - WebTclセッションID
戻り値:
true:レスポンスデータあり、false:レスポンスデータなし

duplicateCheck

public PsvWTclSessionInformation duplicateCheck(PsvWTclHeaderInf aHeadInf)
同一ホストかつ同一仮想ポート番号からの、複数コネクト時は以前の情報

を取り出します。

ただし、同一IEプロセスからのリクエスト時は同一コネクトと判断し、

重複と判断しません。

またIEプロセスごと異常終了した場合の以前のセッション情報のクリアも

同時に行ないます。

パラメータ:
aHeadInf - WebTclヘッダー情報格納クラス
戻り値:
重複したWebTclセッション管理情報(null時は重複無し。正常)

mergeBuddyTable

public void mergeBuddyTable(java.util.Hashtable buddyTable)
協調関係にあるAPサーバのWebTclセッションIDテーブルをマージ します。

※saveSession=true時に使用。(内部処理用)

空のセッション情報はここでクリーンアップします。

パラメータ:
buddyTable - 相手のセッション管理情報クラスのハッシュテーブル

saveSessionInfo

public void saveSessionInfo(javax.servlet.http.HttpSession sess)
APサーバ間でセッション共有時の保存処理。

パラメータ:
sess - HTTPセッション(HttpServletRequestから取得)

内部的に保持するセッション管理情報をHTTPセッションに属性として設定

します。

一般にこれをトリガーとして、連係するAPサーバへHTTPセッションのレプリ

ケーションが実行されます。

注)HttpSession.setAttribute()で自動的にレプリケーションしないAP

  サーバでは、別途レプリケーションのトリガーが必要です。

  また、本メソッドでHttpSessionに設定する属性のキー"WebTclInst"

  を使用しますので、アプリケーションでこのキーを使用しないでください。


setAppAttribute

public boolean setAppAttribute(int aSessionID,
                               java.lang.String aKey,
                               java.lang.String aValue)
アプリケーション用属性の設定。

これはアプリケーション用の情報の簡易コンテナ的な機能で、

saveSession=true時のAPサーバ間の情報の永続性を保障するものではあり

ません。

1APサーバ内で、WebTclセッション内の簡易情報保存機能として提供 しています。

情報は文字列ベースで、セッション情報の破棄とともに消失します。

永続性が重要な情報は、フレームワーク層の永続化専用のクラスのご使用

を推奨します。

パラメータ:
aSessionID - 関連付けるWebTclセッションID
aKey - キー値
aValue - バリュー値
戻り値:
true:格納成功、false:WebTclセッションID不正などで格納失敗

getAppAttribute

public java.lang.String getAppAttribute(int aSessionID,
                                        java.lang.String aKey)
アプリケーション用属性の取り出し。

setAppAttribute()メソッドで設定したアプリケーション用属性の

取得を行います。

パラメータ:
aSessionID - 関連付けてあるWebTclセッションID
aKey - キー値
戻り値:
null:対応するキー値なし、WebTclセッションID不正、情報未設定時。

    !=null:キー値に対応するバリュー値(String)


removeAppAttribute

public void removeAppAttribute(int aSessionID,
                               java.lang.String aKey)
アプリケーション用属性の削除。

注)アプリケーション用属性は設定後、本メソッドで明示的に削除しない場合は、

 e_close時の処理までセッション情報とともに情報保持されます。

パラメータ:
aSessionID - 関連付けてあるWebTclセッションID
aKey - キー値

setLogLevel

public void setLogLevel(int aLogLevel)
ログレベル設定。

WebTcl Java APIのログレベルを設定します。

内部的にデフォルトのLoggerにレベルを設定します。

パラメータ:
aLogLevel - WebTclのログレベルを0〜5の範囲で設定します。

設定値は以下のようにLoggerのLevelに変換します。 0=Level.OFF, 1=Level.FATAL 2=Level.ERROR, 3=Level.WARRN 4=Level.INFO, 5=Level.DEBUG


setLoggerLevel

public void setLoggerLevel(org.apache.log4j.Logger logger)
ログレベルの同期設定。

アプリケーションが取得したLoggerクラスに、WebTcl Java API

と同じログレベルを設定します。

パラメータ:
logger - アプリケーションが取得したLoggerクラス

getCharEncoding

public java.lang.String getCharEncoding()
文字エンコード取得。

戻り値:
文字エンコード(デフォルトWinodws-31J)

setCharEncoding

public void setCharEncoding(java.lang.String encoding)
文字エンコード設定。

本メソッドは文字コードをユーザ側のAPで切り替えるため、提供される

メソッドです。

ただし、指定した文字列は直接HTTPヘッダに使用されるため、通常は設定

しないでください。

例)デフォルトWindows-31J

※PC系のSJISコードを指定

パラメータ:
encoding - 文字エンコード

getPseudoStatus

public int getPseudoStatus(int aSessionID)
偽接続状態の取得。

パラメータ:
aSessionID - 確認対象のセッションのWebTclセッションID
戻り値:
0:通常接続、1:偽接続、-1:WebTclセッションID不正(管理情報無し)
導入されたバージョン:
v1.7.3

clearStockCmd

public int clearStockCmd(int aSessionID)
ストックしたコマンドのクリア。 stockResponseCmdでストックしたコマンドや、データをクリアし、初期状態に戻す。

パラメータ:
aSessionID - クリア対象のセッションのWebTclセッションID
戻り値:
0:初期化成功、-1:WebTclセッションID不正
導入されたバージョン:
v1.7.3

clearStockData

public int clearStockData(int aSessionID)
ストックしたデータのクリア。 stockResponseDataでストックしたデータをクリアし、初期状態に戻す。

パラメータ:
aSessionID - クリア対象のセッションのWebTclセッションID
戻り値:
0:初期化成功、-1:WebTclセッションID不正
導入されたバージョン:
v1.7.3