[seasar-dotnet:962] Re: Quillのデータソース優先順序について質問

koyak [E-MAIL ADDRESS DELETED]
2008年 10月 16日 (木) 18:40:25 JST


森脇さん

小谷です。

> ちなみに今回私が修正したやり方でQuillを使うにあたり問題ないでしょうか?

ほぼ問題ありません。
ただ、アセンブリ(assemblys)の設定は
S2ContainerとQuillContainerのうち先に初期化
(S2ContainerのInitとQuillInjectorのGetInstanceを呼ぶタイミング)
される方に書いた方がいいかと思います。

S2Containerの方が先に初期化される場合は
Web.configのSeasarセクションの中にあるassemblysへの設定を
お願い致します。

>DataSorceの取得をS2Conteinerから取得するように変更した場合、
>トランザクションが問題なく設定されるかが気になっています。

・トランザクションの設定(TransactionInterceptorなどの記述)は
  全てS2Container(dicon)上で行う
・トランザクション境界は必ずS2Container管理(dicon)のコンポーネント上に設定する

場合は問題なく設定されます。

ただし「理屈の上では」という前提が付きます。
実際に使って試してみていただく必要があります。
DBFlute(.NET)とQuillとS2Containerを併用する構成は
トリッキーであり、推奨はできないためです。

※複数データソースを切り替えて使う場合、もう少し複雑な話になるため
その場合は別途お知らせ下さい。


以下は上記回答の根拠についての話のため、
読み飛ばしていただいても大丈夫です。


dicon上に(のみ)記述されたデータソースのインスタンスは
以下の流れで使用されます。

1.S2Container上でインスタンス生成
2.Quillの共通データソースに1のインスタンスが設定される
3.DBFluteは2.の共通データソースを使いDBに接続する

上で書いたように
・トランザクションの設定(TransactionInterceptorなどの記述)は
  全てS2Container(dicon)上で行う
・トランザクション境界は必ずS2Container管理(dicon)のコンポーネント上に設定する

という設定をしていただいた場合、
トランザクション管理で使用されるコンポーネントも
1.で生成されたものと同じデータソースのインスタンスを使って
トランザクション管理を行います。

トランザクション管理とDBアクセスとで同じデータソースの
インスタンスが使用されるため、正常に動作するはずです。

-----------------------------------------------------------------
koyak
[E-MAIL ADDRESS DELETED]
-----------------------------------------------------------------

2008/10/16 17:24 k. moriwaki <[E-MAIL ADDRESS DELETED]>:
> 森脇です。
> 少し言葉足らずでした。
>
> DataSorceの取得をS2Conteinerから取得するように変更した場合、
> トランザクションが問題なく設定されるかが気になっています。
>
> 先日質問しましたが、現在Quill+DBFluteの組み合わせの検証をしており、
> QuillではDBFluteのクラスのみを管理し、データソースやトランザクション
> その他のクラスはS2Conteinerで管理することはできないか試していたところです。
>
>
> # JavaのS2、DBFluteの開発経験者が多いためなるべく
> # Javaと同じような環境にしたいためです。
>
> 2008/10/16 16:44 k. moriwaki <[E-MAIL ADDRESS DELETED]>:
>> 小谷さん
>>
>> 森脇です。回答ありがとうございます。
>>
>>> 説明文の記述不足でした。
>>> 申し訳ありません。
>>> 近いうちにドキュメントを修正したいと思います。
>> 了解しました、よろしくお願いいたします。
>>
>> ちなみに今回私が修正したやり方でQuillを使うにあたり問題ないでしょうか?
>>
>>
>> 2008/10/16 16:18 koyak <[E-MAIL ADDRESS DELETED]>:
>>> 森脇さん
>>>
>>> 小谷です。
>>>
>>>> web.configのconnectionStringsを以下の用に変更する事により取得出来るようになりましたが
>>>> これは仕様でしょうか?
>>>
>>> .NETの仕様が関係している可能性があります。
>>> http://msdn.microsoft.com/ja-jp/library/ms178685(VS.80).aspx
>>>
>>> 関係すると思われる個所を抜粋します。
>>> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>> すべての .NET Framework アプリケーションは、
>>> systemroot\Microsoft .NET\Framework\versionNumber\CONFIG\Machine.config ファイルから
>>> 基本構成設定と既定の設定を継承します。Machine.config ファイルは、サーバー全体の構成設定のために使用されます。
>>> これらの設定の一部は、階層内の下位の構成ファイルでオーバーライドできません。
>>>
>>> .NET クライアント アプリケーション (コンソール アプリケーションおよび Windows アプリケーション) は、
>>> ApplicationName.config という構成ファイルを使用して、継承した設定をオーバーライドします。
>>> ASP.NET アプリケーションは、Web.config という構成ファイルを使用して、継承した設定をオーバーライドします。
>>> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>>
>>> こちらの記述から、App.config,Web.configにconnectionStringセクションががなかったため
>>> machine.configの設定が使われてしまったものと思われます。
>>>
>>> 説明文の記述不足でした。
>>> 申し訳ありません。
>>> 近いうちにドキュメントを修正したいと思います。
>>>
>>>
>>> 2008/10/16 15:48 k. moriwaki <[E-MAIL ADDRESS DELETED]>:
>>>> 森脇と申します。
>>>>
>>>> Quillの機能について現在調査中なのですが、表題の件について確認したい事があります。
>>>>
>>>> 後述しますQuillのデータソースの設定について書かれているページにて
>>>> 保持されるデータソースの優先順序について書かれていますが、
>>>> その優先順位通りにデータソースが設定されませんでした。
>>>>
>>>> 参考としたページ
>>>> diconファイルを書かずにSeasarの機能を利用する - データソースの設定
>>>> http://s2container.net.seasar.org/ja/quill.html#nodicon_config
>>>>
>>>> 優先順位は以下のようになっており
>>>> 1.App.config内quillセクションのdataSources、dataSourceの設定
>>>> 2.App.config内ConnectionStringsセクションの設定
>>>> 3.XXX.dicon内に記述された設定
>>>> 3.のdiconから取得を試そうとしたのですが、
>>>> %SystemRoot%/Microsoft.NET/Framework/V2.0.*/config/machine.config の
>>>> 設定が優先されうまく取得できませんでした。
>>>> web.configのconnectionStringsを以下の用に変更する事により取得出来るようになりましたが
>>>> これは仕様でしょうか?
>>>>
>>>> ----- web.config -----
>>>> <configuration>
>>>>  <!-- 略 -->
>>>>
>>>>  <!-- Seasar.Quill -->
>>>>  <quill>
>>>>    <assemblys>
>>>>      <assembly>System.Data.OracleClient, version=1.0.5000.0,
>>>> Culture=neutral, PublicKeyToken=b77a5c561934e089</assembly>
>>>>    </assemblys>
>>>>  </quill>
>>>>
>>>>  <!-- Seasar -->
>>>>  <seasar>
>>>>    <assemblys>
>>>>      <configPath>App.dicon</configPath>
>>>>    </assemblys>
>>>>  </seasar>
>>>>
>>>>  <appSettings/>
>>>>
>>>>  <connectionStrings>
>>>>    <remove name ="LocalSqlServer"/>
>>>>  </connectionStrings>
>>>>
>>>>  <!-- 略 -->
>>>> </configuration>
>>>> _______________________________________________
>>>> 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
>>>
>>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


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