私は既存の単純なSpringアプリケーションで、NamedParameterJdbcDaoSupport
を拡張するDAOクラスを持っています。Springでの複数のデータソースJNDIエントリとの動的アロケーション
Springコンテキストファイルで、コンテナに定義されているJNDI名を参照する "jee:jndi-lookup"要素を参照する "p:dataSource-ref"属性があります。このような
何か:
<jee:jndi-lookup jndi-name="${jndiPrefix}/specificdb" id="mydb"/>
<bean class="com...dao.OrdersDAO" p:name="ordersDAO" p:dataSource-ref="mydb"/>
このすべてが正常に動作します。私はこれをWebLogicとTomEEの両方にうまく展開しました。
ここで、データソースとのややダイナミックな関係を持つ新しいアプリケーションを検討する必要があります。新しいアプリケーションの全体的なデータフローは、既存のアプリケーションと非常に似ています。
新しいアプリケーションには、すべて同じデータモデルを持つN個のデータソースがあります。コンテナにはすべてのデータソースのJNDI名の定義があり、データソースのすべてのJNDI名を含むカンマ区切りの文字列を含む追加のJNDI名が必要になると思います。
Springでこれを行うための効果的な戦略は何ですか?
更新:私は私のオリジナルのポストで明らかにしなかった
ことの一つは、私はカバーの下に使用するデータソース「選択」するために使用されるだろうアルゴリズムの種類です。
ポイントは、私は単一のデータソースを選択していない、私はそれらのすべてを使用しています。アプリケーションでは、すべてのデータソースでクエリを実行する必要があり、結果セットはすべてのデータソースの和集合です。
最初の回答は、基本的に「ファサード」データソースを他のデータソースのセットの1つに接続する戦略を説明しています。それは興味深い問題ですが、私がここで探しているものではありません。
いずれにしても、私はこれを行う方法を理解していると信じていますが、私はそれをまだ実装していません。私の意図は、データソースのセットを動的に作成し、それらをDAOに関連付けることです(DAOとDAOの間に1つのDAOを設定するか、DAOとデータソースの間に1-1の関係を設定するかはわかりません)。包括的なサービスは、起動時にデータソースのJNDI名のリストを含むJNDI環境文字列を読み取り、DataSourceオブジェクトを動的に作成します。クエリ処理では、各データソースからの結果を単純に収集し、それらを結合します。
おかげで、それは私がここに持っているかなりの状況ではありませんが、私のポストを再読して、私はdidnの実現それを明確にしてはいけません。私はこれを明確にするためにそれを更新します。 –