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

k.moriwaki [E-MAIL ADDRESS DELETED]
2008年 10月 16日 (木) 20:56:37 JST


小谷さん

森脇です。
詳細な回答ありがとうございます。

> DBFlute(.NET)とQuillとS2Containerを併用する構成は
> トリッキーであり、推奨はできないためです。
やはりそうですか…
こちらとしてもDIConteinerはどちらかに統一したいのですが
 ・DBFluteを使いたい
 ・Serviceクラス等のインスタンスモードはなるべく自由に設定したい
を両立できないかとPJ内で要望があり試してみた次第です。

> ただし「理屈の上では」という前提が付きます。
> 実際に使って試してみていただく必要があります。
本日軽く試してみてDBFluteで例外が発生したため、そもそも出来ない
組み合わせなのか気になってメールで質問させていただきました。
理論上は出来るとのことであれば、明日再度試してみたいと思います。


以上、よろしくお願いいたします。


2008/10/16 18:40 koyak <[E-MAIL ADDRESS DELETED]>:
> 森脇さん
>
> 小谷です。
>
>> ちなみに今回私が修正したやり方で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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


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