XML WebサービスとCOM+ Servicesを連携させると、トランザクションのコミットおよびロールバックを処理する特定のコードを記述する必要はなくなります。オブジェクトがトランザクションに参加するかどうかは、“宣言”によって決定することが可能になります。
ASP.NETを使用して作成したXML Webサービスでは、XML Webサービス・メソッドに適用されたWebMethod属性のTransactionOptionプロパティを設定することでトランザクション動作を宣言できます。XML
Webサービス・メソッドの実行中に例外がスローされた場合、トランザクションは自動的に中止されます。その逆に、例外が発生しない場合は、トランザクションは自動的にコミットされます。
XML WebサービスとCOM+ Servicesを連携させるには以下の作業を行います。
1. System.WebServices.dllの参照設定
ASP.NET Webサービス・プロジェクトの参照設定でSystem.WebServices.dllを追加します。
2. WebメソッドのTransactionOptionの設定
WebMethod属性のTransactionOptionプロパティを設定することでトランザクションをサポートします。
Imports System.Web.Services |
リスト13 WebMethod属性でトランザクションオプションを指定(VB.NET) |
using System.Web.Services; |
リスト14 WebMethod属性でトランザクションオプションを指定(C#) |
TransactionOptionは以下の5つのオプションをサポートしています。
Transaction Option | 説明 |
---|---|
Disabled | XML Webサービス・メソッドが、トランザクションのスコープ内で実行されないことを示します。要求が処理されるときに、XML Webサービス・メソッドがトランザクションなしで実行されます。 [WebMethod(TransactionOption=TransactionOption.Disabled)] |
NotSupported | XML Webサービス・メソッドが、トランザクションのスコープ内で実行されないことを示します。要求が処理されるときに、XML Webサービス・メソッドがトランザクションなしで実行されます。 [WebMethod(TransactionOption=TransactionOption.NotSupported)] |
Supported | XML Webサービス・メソッドが、トランザクションのスコープ内で実行されないことを示します。要求が処理されるときに、XML Webサービスがトランザクションなしで作成されます。 [WebMethod(TransactionOption=TransactionOption.Supported)] |
Required | XML Webサービス・メソッドに、トランザクションが必要であることを示します。XML Webサービス・メソッドは、トランザクションにルート・オブジェクトとしてだけ参加できるため、XML Webサービス・メソッド用に新しいトランザクションが作成されます。 [WebMethod(TransactionOption= TransactionOption.Required)] |
RequiresNew | XML Webサービス・メソッドに新しいトランザクションが必要であることを示します。要求が処理されるときに、新しいトランザクション内でXML Webサービスが作成されます。 [WebMethod(TransactionOption=TransactionOption.RequiresNew)] |
表5 TransactionOptionがサポートする5つのオプション |
最後に、ASP.NETからODP.NETを利用する際の注意点を説明します。IISではASP.NETスクリプトの実行時、ASPNETユーザーとして実行されます。ASPNETユーザーのORACLE_HOMEディレクトリへのアクセス権がないと図7のようなエラーが発生しますので、アクセス権を設定する必要があります。
手順1
Administrator権限のあるユーザーでWindowsにログオンする。
手順2
WindowsのExplorer(Explorer.exe)を起動し、ORACLE_HOMEディレクトリを選択して右クリック。
手順3
「プロパティ」を選択し「セキュリティ」タブを開く。
手順4「追加(D)」を押し「ユーザーまたはグループの選択」画面を表示する(画像をクリックすると拡大します)。
手順5
「場所」からローカルマシンを選択し、上記の「ASPNET」を選択し「追加(A)」を押し「OK」を押して追加する。
手順6
手順5で追加したユーザーを選択し、「アクセス許可(P)」より「許可」の列にある「読み取りと実行」のチェックを付け「適用(A)」に続いて「OK」を押す。
今回はASP.NETからODP.NETを使用する際のコーディングについて説明しました。次回は、データアクセスの詳細な説明とパフォーマンスを向上させるためのコーディングを説明します。(次回へ続く)
Copyright © ITmedia, Inc. All Rights Reserved.