Oracle Forms 接続は、OraFormsConnect で確立し、OraFormsDisconnect で切断します。 記録されるスクリプトには、TMain トランザクション開始時の OraFormsConnect、TMain での最後の Oracle Forms 呼び出しとしての OraFormsDisconnect が含まれます。 OraFormsDisconnect を呼び出して確実にサーバー接続を切断する必要があります。呼び出さなかった場合、クライアントを処理するサーバー ランタイム プロセスは動作し続けます。
OraForms.bdh は、サーバー エラーが原因で仮想ユーザー プロセスが終了したときに OraFormsDisconnect を呼び出すイベント ハンドラーを実装しています。
1 つのログイン プロシージャがあり、テスト対象のアクションを実行する Main トランザクションが複数存在するシナリオでは、トランザクションの開始時に接続を確立したことを確認する必要があります。 サーバー エラーが原因で接続が切断された場合、後続のトランザクションは接続を再確立する必要があります。
この問題に対応するための推奨方法は、Oracle Forms アプリケーションへの接続を確立するスクリプト コードを記述した BDL 関数を作成することです。 この関数は、OraFormsIsConnected メソッドを使用して、接続が既に確立されているかどうかを問い合わせることができます。 この関数は、アプリケーションへの接続が必要な各 Oracle Forms トランザクションの開始時に呼び出す必要があります。
var
gsSSessionID : string;
dclrand
dcltrans
transaction TInit
begin
OraFormsInit("http://lnz-vmoraf11:8888/forms/lservlet", "lnz-vmoraf11", 9000, ORA_FORMS_11G);
//WebSetUserBehavior(WEB_USERBEHAVIOR_FIRST_TIME);
//WebSetDocumentCache(true, WEB_CACHE_CHECK_SESSION);
end TInit;
transaction TShutdown
begin
OraFormsDestroy();
end TShutdown;
transaction TMain
begin
WebSetBrowser(WEB_BROWSER_MSIE8);
WebModifyHttpHeader("Accept-Language", "de-at");
WebPageUrl("http://lnz-vmoraf11:8888/forms/frmservlet", "iOrganizer", FORMS_FRMSERVLET001);
WebSetBrowser(WEB_BROWSER_CUSTOM);
WebSetUserAgent("Java1.6.0.21");
WebSetHttpVersion("HTTP/1.1");
WebModifyHttpHeader("Accept-Language", NULL, WEB_MODIFY_ OPT_Remove);
WebUrl("http://lnz-vmoraf11:8888/forms/java/f90all_ jinit.jar", 29.61);
WebUrl("http://lnz-vmoraf11:8888/forms/jars/iorganizer.jar", 0.42);
WebUrl("http://lnz-vmoraf11:8888/forms/iorg_images/iorganizer.gif", 0.45);
WebUrl("http://lnz-vmoraf11:8888/forms/images/blue.gif", 0.43);
WebUrl("http://lnz-vmoraf11:8888/forms/java/oracle/forms/registry/Registry.dat", 0.08);
WebUrl("http://lnz-vmoraf11:8888/forms/iorg_registry/iorg_registry.dat", 6.58);
// Connect - with connection properties
OraFormsSetInt("INITIAL_VERSION", 1111003);
OraFormsSetPoint("INITIAL_RESOLUTION", 96, 96);
OraFormsSetPoint("INITIAL_DISP_SIZE", 1280, 1024);
OraFormsSetInt("INITIAL_COLOR_DEPTH", 256);
OraFormsSetString("FONT_NAME", "Dialog");
OraFormsSetInt("FONT_SIZE", 900);
OraFormsSetByte("FONT_STYLE", 0);
OraFormsSetByte("FONT_WEIGHT", 0);
OraFormsSetPoint("INITIAL_SCALE_INFO", 8, 20);
OraFormsSetBoolean("WINSYS_REQUIREDVA_LIST", false);
OraFormsSetString("DEFAULT_LOCAL_TZ", "Europe/Berlin");
OraFormsConnect("server escapeParams=true module=iorganizer.fmx userid= debug=no host= port= usesdi=yes record=names",
"http://lnz-vmoraf11:8888/forms/lservlet?ifcfs=/forms/frmservlet?config=iorg&ifsessid=formsapp.4&acceptLanguage=de-at",
"http://lnz-vmoraf11:8888/forms/frmservlet?config=iorg");
OraFormsGetSessionId(gsSSessionID);
WebCookieSet(gsSSessionID, "http://lnz-vmoraf11:8888/forms/java/");
// ---
// New window activated: 10
OraFormsSetWindow("10");
ThinkTime(6.6);
…
end TMain var
gsSSessionID : string;
dclfunc
function DoConnect
begin
WebSetBrowser(WEB_BROWSER_MSIE8);
WebModifyHttpHeader("Accept-Language", "de-at");
WebPageUrl("http://lnz-vmoraf11:8888/forms/frmservlet", "iOrganizer", FORMS_FRMSERVLET001);
WebSetBrowser(WEB_BROWSER_CUSTOM);
WebSetUserAgent("Java1.6.0.21");
WebSetHttpVersion("HTTP/1.1");
WebModifyHttpHeader("Accept-Language", NULL, WEB_MODIFY_ OPT_Remove);
WebUrl("http://lnz-vmoraf11:8888/forms/java/f90all_ jinit.jar", 29.61);
WebUrl("http://lnz-vmoraf11:8888/forms/jars/iorganizer.jar", 0.42);
WebUrl("http://lnz-vmoraf11:8888/forms/iorg_images/iorganizer.gif", 0.45);
WebUrl("http://lnz-vmoraf11:8888/forms/images/blue.gif", 0.43);
WebUrl("http://lnz-vmoraf11:8888/forms/java/oracle/forms/registry/Registry.dat", 0.08);
WebUrl("http://lnz-vmoraf11:8888/forms/iorg_registry/iorg_registry.dat", 6.58);
// Connect - with connection properties
OraFormsSetInt("INITIAL_VERSION", 1111003);
OraFormsSetPoint("INITIAL_RESOLUTION", 96, 96);
OraFormsSetPoint("INITIAL_DISP_SIZE", 1280, 1024);
OraFormsSetInt("INITIAL_COLOR_DEPTH", 256);
OraFormsSetString("FONT_NAME", "Dialog");
OraFormsSetInt("FONT_SIZE", 900);
OraFormsSetByte("FONT_STYLE", 0);
OraFormsSetByte("FONT_WEIGHT", 0);
OraFormsSetPoint("INITIAL_SCALE_INFO", 8, 20);
OraFormsSetBoolean("WINSYS_REQUIREDVA_LIST", false);
OraFormsSetString("DEFAULT_LOCAL_TZ", "Europe/Berlin");
OraFormsConnect("server escapeParams=true module=iorganizer.fmx userid= debug=no host= port= usesdi=yes record=names",
"http://lnz-vmoraf11:8888/forms/lservlet?ifcfs=/forms/frmservlet?config=iorg&ifsessid=formsapp.4&acceptLanguage=de-at",
"http://lnz-vmoraf11:8888/forms/frmservlet?config=iorg");
OraFormsGetSessionId(gsSSessionID);
WebCookieSet(gsSSessionID, "http://lnz-vmoraf11:8888/forms/java/");
end DoConnect;
dcltrans
transaction TInit
begin
OraFormsInit("http://lnz-vmoraf11:8888/forms/lservlet", "lnz-vmoraf11", 9000, ORA_FORMS_11G);
//WebSetUserBehavior(WEB_USERBEHAVIOR_FIRST_TIME);
//WebSetDocumentCache(true, WEB_CACHE_CHECK_SESSION);
end TInit;
transaction TShutdown
begin
OraFormsDestroy();
end TShutdown;
transaction TMain
begin
DoConnect();
// ---
// New window activated: 10
OraFormsSetWindow("10");
ThinkTime(6.6);
…
end Tmain
transaction TsecondMain
begin
DoConnect();
// ---
// New window activated: 10
OraFormsSetWindow("10");
ThinkTime(6.6);
…
end TsecondMain; この方法を使用すると、複数の Main トランザクションを実行するユーザーを使用して負荷テストを実行しているときにアクティブなトランザクションが失敗し、サーバーから切断された場合でも後続のトランザクションに関する問題は発生しません。