[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 メーリングリストの案内