4.7.2 DABroker for .NET Frameworkを使用したSPP.NETおよびSUP.NETのコーディング例
DABroker for .NET Frameworkと連携したSPP.NETおよびSUP.NETのコーディング例を示します。
- 〈この項の構成〉
(1) SPP.NET,C#の場合のコーディング例(InitializeSPPメソッドでDBMSとのコネクションを生成する)
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) { // 予期しない例外 } } } }
(2) SPP.NET,C#の場合のコーディング例(InitializeSPPメソッドでDBMSとのコネクションを生成しない)
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; } } } } }
(3) SUP.NET,C#の場合のコーディング例
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; } } } }