DABroker for .NET Frameworkと連携したSPP.NETおよびSUP.NETのコーディング例を示します。
using System;
using Hitachi.OpenTP1;
using Hitachi.OpenTP1.Server;
using Hitachi.DABroker; // DABroker for .NET Frameworkのクラス
namespace MyCompany
{
public class CallerSampleImpl : SPPBaseICallerSample
{
private IGyoumuAStub server = null;
private DABConnection dabCon = null; // DBMSとの接続
…
public override void InitializeSPP()
{
server = new IGyoumuAStub("GRP1");
// クライアントスタブの生成
dabCon = new DABConnection("接続文字列");
// コネクションの生成
try {
dabCon.Open(); // コネクションのオープン
} catch (DABException exp) {
// DABrokerから例外がスローされた
} catch (Exception exp) {
// 予期しない例外
}
}
public override void FinalizeSPP()
{
server = null;
if (dabCon != null) { // コネクションの解放
dabCon.Close();
dabCon = null;
}
}
[TP1RpcMethod]
public void DBService()
{
try {
Trn.Begin();
… // データベースアクセス処理
Trn.Commit();
} catch (DABException exp) {
// DABrokerから例外がスローされた
Trn.Rollback(); // ロールバック
} catch (Exception exp) {
// 予期しない例外
}
}
}
}
using System;
using Hitachi.OpenTP1;
using Hitachi.OpenTP1.Server;
using Hitachi.DABroker; // DABroker for .NET Frameworkのクラス
namespace MyCompany
{
public class CallerSampleImpl : SPPBaseICallerSample
{
private IGyoumuAStub server = null;
…
public override void InitializeSPP()
{
server = new IGyoumuAStub("GRP1");
// クライアントスタブの生成
}
public override void FinalizeSPP()
{
server = null;
}
[TP1RpcMethod]
public void DBService()
{
private DABConnection dabCon = null;
// DBMSとの接続
try {
Trn.Begin();
dabCon = new DABConnection("接続文字列");
// コネクションの生成
dabCon.Open(); // コネクションのオープン
… // データベースアクセス処理
Trn.Commit();
} catch (DABException exp) {
// DABrokerから例外がスローされた
Trn.Rollback(); // ロールバック
} catch (Exception exp) {
// 予期しない例外
} finally {
if (dabCon != null) { // コネクションの解放
dabCon.Close();
dabCon = null;
}
}
}
}
}
using System;
using Hitachi.OpenTP1;
using Hitachi.OpenTP1.Server;
using Hitachi.DABroker; // DABroker for .NET Frameworkのクラス
namespace MyCompany
{
public class CallerSample
{
…
public static void Main(string[] args)
{
private DABConnection dabCon = null;
// DBMSとの接続
try {
…
Rpc.Open(); // RPCオープン
Adm.Complete(); // SUP.NET開始処理完了通知
…
Trn.Begin();
dabCon = new DABConnection("接続文字列");
// コネクションの生成
dabCon.Open(); // コネクションのオープン
// データベースアクセス処理
Trn.Commit();
…
Rpc.Close(); // RPCクローズ
} catch (DABException exp) {
// DABrokerから例外がスローされた
Trn.Rollback(); // ロールバック
} catch (TP1UserException exp) {
// サービスを要求したメソッドからユーザ例外がスローされた
} catch (TP1RemoteException exp) {
// サービスを要求したメソッドで予期しない例外が発生
} catch (TP1ServerException exp) {
// OpenTP1(クラスライブラリ)が検知したエラー
} catch (TP1Exception exp) {
// OpenTP1(クラスライブラリ以外)が検知したエラー
} catch (Exception exp) {
// 予期しない例外
} finally {
if (dabCon != null) { // コネクションの解放
dabCon.Close();
dabCon = null;
}
}
}
}