[seasar-dotnet:2286] Re: Quill、DBFluteでの同一DB、複数スキーマ、同一テーブル構造での接続について
志水正幸
[E-MAIL ADDRESS DELETED]
2013年 5月 31日 (金) 15:54:37 JST
koalaさん、こんにちは。
志水です。
お疲れ様です。
良さげな感じじゃないですか。
あとは、同時アクセスのテストですね。
できれば、テストした結果での問題点や改善方法、
問題がなくてもよいので、後々の人のために
情報共有を宜しくお願いします。
以上
> koalaです。
>
>> Quillで管理するコンポーネントは全て singleton です。
>> アプリケーション上にインスタンスは一つとなります。
> ということは、私が先で書いたやりかたでは全然ダメですね。
> たまたま初めてInjectしたログインユーザーのデータソース名で
> Daoインスタンスが生成されて他のユーザーにも使いまわされるので
> 切り替わるはずがない・・・。
>
> そこで「AOPでSetDataSourceNameしたい」になるのですね。
>
> *---
> ■動的にデータソースを切り替えるDao
> <Implementation()>
> <S2Dao()>
> <Aspect(GetType(DataSourceInterceptor))>
> <Bean(GetType(TestTable))>
> Public Interface ITestTableDao
> Function SelectAll() As IList(Of TestTable)
> End Interface
>
>
> ■データソース切り替えInterceptor
> Public Class DataSourceInterceptor
> Inherits AbstractInterceptor
>
> Public Sub SetDataSourceName(DataSourceName As String)
> Dim container = New QuillContainer()
> Dim proxy = TryCast(ComponentUtil.GetComponent(container, GetType(SelectableDataSourceProxyWithDictionary)), SelectableDataSourceProxyWithDictionary)
> proxy.SetDataSourceName(DataSourceName)
> End Sub
>
> Public Overrides Function Invoke(invocation As IMethodInvocation) As Object
> Dim method = invocation.Method
>
> Call SetDataSourceName(System.Web.HttpContext.Current.Session("DataSourceName"))
>
> Dim ret = invocation.Proceed()
>
> Return ret
> End Function
> End Class
>
> ■常にログイン管理DBに接続するDao
> <Implementation()>
> <S2Dao(GetType(LoginDaoSetting))>
> <Bean(GetType(UserTable))>
> Public Interface IUserTableDao
> Function SelectByPK(UserID As String) As UserTable
> End Interface
> ---*
>
> みようみまねなので、何かお気づきのことなどご指摘頂けると幸甚です。
> 以上よろしくお願いいたします。
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
seasar-dotnet メーリングリストの案内