2016-11-16 5 views
0

Я экспериментировал с мигрирующими из Grails 2 в Grails 3.Grails 3 JNDI DataSource для Tomcat, WebLogic Glassfish - Vs Grails 2

В Grails 2, я использовал это как мое имя JNDI в DataSource.groovy файле , в рамках производственно-окр

jndiName = "${(System.getProperty('catalina.home') && (System.getProperty('java.class.path')).trim().toLowerCase().indexOf('tomcat') > 0) ? 'java:comp/env/' : ''}jdbc/myGrails" 

я обнаружил, что работал хорошо для меня GlassFish, Weblogic и Tomcat.

Однако, когда я пытаюсь это в Grails 3, в application.yml:

jndiName: ${(System.getProperty('catalina.home') && (System.getProperty('java.class.path')).trim().toLowerCase().indexOf('tomcat') > 0) ? 'java:comp/env/' : ''}jdbc/myGrails 

я получаю эту ошибку при запуске "Grails выполнения приложения":

| Error Error occurred running Grails CLI: mapping values are not allowed here 
in 'reader', line 123, column 169: 
... mcat') > 0) ? 'java:comp/env/' : ''}jdbc/traxGrails 
            ^
(Use --stacktrace to see the full trace) 

Если я использовать это в Grails 3:

jndiName: java:/comp/env/jdbc/myGrails 

Затем он отлично работает при использовании Grails выполнения приложения, а также прекрасно работает для развертывания WAR на сервер Tomcat.

Может кто-нибудь помочь мне получить мое выражение «jndi» от Grails 2 для работы в Grails 3?

ответ

0

Похоже, вы пытаетесь использовать синтаксис groovy в файле yml, который не работает. Вы можете создать файл application.groovy (который будет объединен с файлом application.yml), если вы хотите использовать синтаксис groovy.

Также обратите внимание на множество способов пружинной загрузке позволяет вводить свойства с помощью ENV переменных, свойств, YML и т.д. http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html