1

実行時に複数のデータソースを切り替えることについてよく読んだことがありますが、私が理解している限り、それらはすでに定義されたデータソースです。Web サービス呼び出しから実行時にデータソース プロパティを割り当てる方法についてはよくわかりません。

データソースを切り替える必要はありません。Web サービスからの接続データを使用してデータソースを 1 つだけ作成する必要があります。これらのパラメータを Web サービスから取得し、そこからデータソースを作成する方法はありますか?

ここでのポリシーは、すべてのプロジェクトの Web サービスからデータソース パラメーターを取得することです。これにより、接続データはファイル内にもコード内にも存在せず、グローバル セキュリティ アプリケーションから DBA によってのみ操作されます。

同じデータソース ファイルで Web サービスを呼び出そうとしましたが、うまくいきませんでした。

Info:
Web サービスは Soap
Web サービスです Grails: 1.3.9

よろしく。

4

1 に答える 1

0

Webサービスの呼び出しと dataSource の設定の変更を処理するBeanPostProcessorを作成できると思います。

おそらく、セッション ファクトリの作成を遅らせる必要があるでしょう。すべて正しく設定する前に、Grails が dataSource を使用しようとしないことを確認してください。

BeanPostProcessor は次のようになります。

class WebserviceDataSourceBeanPostProcessor implements BeanPostProcessor {
    Object postProcessBeforeInitialization(Object bean, String beanName) {
        return bean
    }

    Object postProcessAfterInitialization(Object bean, String beanName) {

        if (bean instanceof DataSource){
           def info = //call webservice here...
           bean.username = info.username
           bean.password = info.password
           bean.url = info.url
           //checkout more setters in: http://commons.apache.org/proper/commons-dbcp/apidocs/org/apache/commons/dbcp/BasicDataSource.html
        }

        return bean
    }
}

そして、resources.groovyでこの Spring Bean を宣言したことを確認してください。

beans = {
    webserviceDataSourceBeanPostProcessor(WebserviceDataSourceBeanPostProcessor)
}

Web サービスからのこの同じ構成を持つ複数のプロジェクトがある場合は、コードを再利用して、このためのプラグインの可能性を考えることができます。

于 2013-05-30T17:25:51.737 に答える