セション呼び出しをするクライアントアプリケーションの処理の流れとコードの例を示します。太字で示しているコードは,同期型呼び出しのコードと異なる部分です。
//
// "ClientAP.java"
//
import JP.co.Hitachi.soft.TPBroker.TSC.*;
public class ClientAP
{
public static void main(String[] args)
{
////////
// 1, TPBrokerの初期化
////////
org.omg.CORBA.ORB orb = null;
try
{
// ORBの初期化
orb = org.omg.CORBA.ORB.init(args, null);
}
catch(org.omg.CORBA.SystemException ce)
{
// 例外処理
System.out.println(ce);
System.exit(1);
}
////////
// 2, TPBroker OTMの初期化処理
////////
// TSCの初期化
try
{
TSCAdm.initClient(args, null, orb);
}
catch(TSCSystemException tsc_se)
{
// 例外処理
System.out.println(tsc_se);
System.exit(1);
}
////////
// 3, TSCデーモンへの接続
////////
TSCDomain domain = null;
try
{
domain = new TSCDomain(null, null);
}
catch(TSCSystemException tsc_se)
{
// 例外処理
System.out.println(tsc_se);
try
{
TSCAdm.endClient();
}
catch(TSCSystemException se)
{
System.exit(1);
}
System.exit(1);
}
TSCClient tsc_client = null;
try
{
tsc_client =
TSCAdm.getTSCClient(domain, TSCAdm.Regulator);
}
catch(TSCSystemException tsc_se)
{
// 例外処理
System.out.println(tsc_se);
try
{
TSCAdm.endClient();
}
catch(TSCSystemException se)
{
System.exit(1);
}
System.exit(1);
}
////////
// 4, TSCユーザプロキシの生成および各種設定
////////
// ユーザ定義IDLインタフェース"ABC"用のTSCspxy生成
ABC_TSCspxy my_proxy = null;
try
{
my_proxy = new ABC_TSCspxy(tsc_client);
}
catch(TSCSystemException tsc_se)
{
// 例外処理
System.out.println(tsc_se);
try
{
TSCAdm.releaseTSCClient(tsc_client);
TSCAdm.endClient();
}
catch(TSCSystemException se)
{
System.exit(1);
}
System.exit(1);
}
////////
// 5, TSCユーザプロキシのメソッド呼び出し
// (サーバ側のオブジェクトの呼び出し)
////////
try
{
callSessionService.invoke(my_proxy);
}
catch(TSCSystemException tsc_se)
{
// 例外処理
System.out.println(tsc_se);
try
{
TSCAdm.releaseTSCClient(tsc_client);
TSCAdm.endClient();
}
catch(TSCSystemException se)
{
System.exit(1);
}
System.exit(1);
}
////////
// 6, TSCデーモンへの接続解放
////////
try
{
TSCAdm.releaseTSCClient(tsc_client);
}
catch(TSCSystemException tsc_se)
{
// 例外処理
System.out.println(tsc_se);
try
{
TSCAdm.endClient();
}
catch(TSCSystemException se)
{
System.exit(1);
}
System.exit(1);
}
////////
// 7, TPBroker OTMの終了処理
////////
try
{
TSCAdm.endClient();
}
catch(TSCSystemException tsc_se)
{
// 例外処理
System.out.println(tsc_se);
System.exit(1);
}
System.exit(0);
}
}
//
// "callSessionService.java"
//
import JP.co.Hitachi.soft.TPBroker.TSC.*;
public
class callSessionService
{
public static void
invoke(ABC_TSCspxy my_proxy)
{
////////
// 1, セションの開始
////////
try
{
my_proxy._TSCStart();
}
catch(TSCSystemException tsc_se)
{
//例外処理
System.out.println(tsc_se);
throw tsc_se;
}
//////
// 2, サービスの呼び出し
//////
//in引数の準備
byte[] user_in = new byte[4];
//out引数の準備
OctetSeqHolder user_out = new OctetSeqHolder();
try
{
for(int i=0; i<3; ++i)
{
//サーバのメソッド呼び出し
my_proxy.call(user_in, user_out);
}
}
catch(TSCSystemException tsc_se)
{
//例外処理
System.out.println(tsc_se);
try{
my_proxy._TSCStop();
}
catch(TSCSystemException se)
{}
throw tsc_se;
}
////////
// 3, セションの停止
////////
try
{
my_proxy._TSCStop();
}
catch(TSCSystemException tsc_se)
{
//例外処理
System.out.println(tsc_se);
throw tsc_se;
}
}
}