/ / Grails: Vytvorte môj zdroj údajov z webovej služby - webové služby, grily, zdroj údajov

Graly: Vytvorte zdroj údajov z webservice - web-services, grails, datasource

Veľa som čítal o prepínaní medzi viacerýmizdroj údajov za behu, ale pokiaľ viem, že sú to už definované zdroje údajov. Nie som si úplne istý, ako môžem priradiť vlastnosti zdrojov údajov za behu z volania na webovú službu.

Nepotrebujem prepínať medzi zdrojmi údajovje potrebné vytvoriť iba jeden zdroj údajov s údajmi o pripojení, ktoré pochádzajú z webovej služby. Existuje spôsob, ako načítať tieto parametre z webovej služby a z toho vytvoriť zdroj údajov?

Zásadou je načítať zdroj údajovparametre z webovej služby pre všetky projekty, takže údaje o pripojení nie sú vo vnútri súboru ani do kódu a manipulujú s nimi iba DBA z globálnej bezpečnostnej aplikácie.

Pokúsil som sa volať webovú službu v rovnakom súbore zdrojov údajov, ale nefungovalo to.

Info:
Webová služba je mydlo
webová služba Grails: 1.3.9

S pozdravom.

odpovede:

0 pre odpoveď č. 1

Myslím, že si môžete vytvoriť BeanPostProcessor ktoré sa starajú o volanie webovej služby a o zmenu nastavení vášho zdroja údajov.

Pravdepodobne budete musieť oneskorenie vytvorenia továrne na relácie, uistite sa, že sa Grails nepokúša použiť váš zdroj údajov skôr, ako budete mať všetky správne nastavené.

BeanPostProcessor bude vyzerať takto:

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
}
}

A uistite sa, že ste túto jarnú fazuľu vyhlásili resources.groovy

beans = {
webserviceDataSourceBeanPostProcessor(WebserviceDataSourceBeanPostProcessor)
}

Ak budete mať viac ako jeden projekt s rovnakou konfiguráciou prichádzajúci z webovej služby, môžete premýšľať o možnosti doplnku na tento účel, opätovnom použití kódu.