2017-01-03 7 views
0

私は既存の単純な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オブジェクトを動的に作成します。クエリ処理では、各データソースからの結果を単純に収集し、それらを結合します。

答えて

0

TomEEには、Springと同じ種類のルーティング機能があります。

これらのリンクをチェックアウト:

+0

おかげで、それは私がここに持っているかなりの状況ではありませんが、私のポストを再読して、私はdidnの実現それを明確にしてはいけません。私はこれを明確にするためにそれを更新します。 –

関連する問題