2014-12-09 2 views
1

Я создал плагин, который отвечает за доступ к RDBMS вторичному источнику данных таким образом, что мы скрываем уровень домена и сервиса от приложения, которое его будет использовать (это мешает им модифицировать этот источник). У меня есть плагин, опубликованный в artifactory, а затем успешно импортированный в мое приложение. Однако файл данных, который использует плагин, был исключен из упаковки, а при вызове методов службы в плагине он пытается выполнить эти запросы против моего источника данных по умолчанию.Как рассказать плагин Grails для использования вторичного источника данных (а не по умолчанию)?

  1. Есть ли способ рассказать плагину Grails, чтобы не использовать источник данных по умолчанию, но вторичный источник данных? или есть способ заставить плагин не исключать свой собственный файл DataSource.groovy?

Благодаря

UPDATE

Ответ приводится ниже будет работать, в основном это, как несколько источников данных работают в Grails. Единственный недостаток этого заключается в том, что когда я разрабатываю сам плагин, и я хочу запустить его в качестве приложения, чтобы убедиться, что он делает то, что я хочу, чтобы источник данных, который ожидает Grails, должен называться dataSource, поэтому я должен прокомментировать

static mapping = { 
    // datasource 'dataSource_lookup' 
} 

для того, чтобы его запустить. Тогда, когда я вижу, что все хорошо, как я желаю, и я хочу опубликовать плагин, я должен пройти все мои файлы домена и раскомментировать строку выше, чтобы при вставке плагина в основное приложение оно будет иметь ссылку к вторичному источнику данных. Однако это очень болезненно и медленно.

Есть ли лучший способ сделать это? Зачем нужен источник данных по умолчанию dataSource? можно ли это изменить?

ответ

2

В классах домена вашего плагина вы должны сделать что-то вроде этого

static mapping ={ 
    //if you need to use the second ds only in Production you can use the Environment 
    if(Environment.PRODUCTION){ 
     datasource('your_sencondary_datasource') 
    } 
} 

и в вашем основном приложении в вашем DataSource.groovy вам необходимо сопоставить источник данных как этот

production{ 
    dataSource { 
     <'your configs of primary ds'> 
    } 

    dataSource_you_secondary_datasource { 
     <'your configs to secondary ds'> 
    } 
} 
+1

Вы можете также вводят вторичный источник данных в службы grails: def dataSource_your_secondary_datasource – fourgablesguy

+0

Я понимаю, что это решение будет работать, но это означает, что все мои домены должны иметь статическое сопоставление с указанием имени используемого ресурса. Проблема в том, что когда я разрабатываю сам плагин, я должен прокомментировать отображение всех доменов, потому что когда я запускаю плагин отдельно, он ожидает, что источник данных будет называться datasource вместо datasource_lookup. Это делает его очень изменчивым каждый раз, когда я хочу разработать компиляцию плагина и каждый раз, когда я готов выпустить uncomment, а затем опубликовать плагин. Есть ли лучший способ сделать это? – Viriato

+0

@meurer забыл упомянуть вас в своем комментарии, см. Выше, если у вас есть предложения. – Viriato