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

kubo [E-MAIL ADDRESS DELETED]
2008年 10月 16日 (木) 21:23:03 JST


久保(jflute)です。

> ・Serviceクラス等のインスタンスモードはなるべく自由に設定したい

参考までにお聞きしたいのですが、
Serviceクラスは前回の話で「singleton」でOKということでしたが、
その他のクラスで「prototype」じゃないといけないクラスを
作成する予定ということでしょうか?

というのも、自分の経験ではありますが、
JavaでもC#でも「prototype」を作る必要に迫られたことはなく、
ほとんど「singleton」で問題ありませんでした。
(リクエストのパラメータDTOを兼務するPageクラスとかは別ですが)
どうしてもステートを持つクラスの場合は、DIContainer管理でなく
自分で小さなAbstractFactoryを作ってやっていました。

2008/10/16 k. moriwaki <[E-MAIL ADDRESS DELETED]>:
> 小谷さん
>
> 森脇です。
> 詳細な回答ありがとうございます。
>
>> 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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


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