[seasar-dotnet:903] Re: [Quill][DBFlute]Transaction属性がないクラスでNullReferenceExceptionが発生

Takeshi Tsuzuki [E-MAIL ADDRESS DELETED]
2008年 7月 26日 (土) 08:03:42 JST


宮城さん、小谷さん
都築です。
リリースして頂きました1.3.10にて修正された通りの動作を
確認いたしました。

早々にご対応いただきまして、ありがとうございました。

2008/07/24 18:13 koyak <[E-MAIL ADDRESS DELETED]>:

> 都筑さん
>
> 小谷です。
>
> ご指摘ありがとうございます。
>
> おっしゃる通り、現在はデータソースにTxDataSource、またはそれを継承したクラスを
> 使用し、かつQuillContainerに登録されているコンポーネントの中に
> Transaction属性を使っているクラスがなければ
> TransactionContextの設定などが行われないままになってしまっています。
>
> 次バージョン(1.3.10)ではこの問題について対応し、
> Transaction属性が使われていない場合は既定の設定を行うように
> 修正されます。
>
> 次バージョンは数日以内のリリースとなるかと思いますが、
> お急ぎの場合はお手数ですが
> svn(https://www.seasar.org/svn/s2container.net/)上の
> ソースコードをコンパイルしてご使用下さい。
>
> よろしくお願い致します。
>
> 2008/07/24 12:03 Takeshi Tsuzuki <[E-MAIL ADDRESS DELETED]>:
>  > 都築と申します。
> > Quill(S2Container.NET 1.3.9)とDBFlute 0.7.6を利用させて頂き、
> > データベースアクセスを行う作成しております。
> >
> > アプリケーション構成ファイルに、以下のようにデータソースの
> > 設定を行い、データベースアクセス処理を行おうとしたところ、NullReferenceExceptionがthrowされました。
> >
> > -- アプリケーション構成ファイルの設定 --
> >   <quill>
> >     <dataSources>
> >       <dataSource name="データソース名">
> >         <provider>PostgreSQL</provider>
> >         <connectionString>"接続文字列"</connectionString>
> >         <class>Seasar.Extension.Tx.Impl.TxDataSource</class>
> >       </dataSource>
> >     </dataSources>
> >   </quill>
> > 原因は、TxDataSourceのGetConnection()が呼ばれた際、Contextがnullになっているため、
> > Context.CurrentプロパティによりITransactionContextを取得しているためです。
> >
> > Contextを設定しているのは、クラスまたはメソッドにTransactionAttributeが付与されている
> > 場合に、
> > ・AspectBuilderのGetMethodInterceptor(TransactionAttribute)メソッドが呼び出される
> > ・この中でDataSourceのSetupメソッドが呼ばれる
> > ・SelectableDataSourceProxyWithDictionaryクラスのSetTransactionContextメソッドにおいて
> > DataSourceがTxDataSourceであればトランザクションコンテキストを設定する
> > という処理になっておりました。
> >
> > そのため、どこかのクラスでTransaction属性が設定されていれば対象のクラスに
> > Transaction属性がついていなくてもこのExceptionは発生しないようですが、
> > 少し分かりにくいような気がしましたので、ご報告させて頂きます。
> >
> > 以上です。
> > よろしくお願いいたします。
> > _______________________________________________
> > seasar-dotnet mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >
> >
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20080726/65dac561/attachment.html>


seasar-dotnet メーリングリストの案内