我正在尝试从Grails 2迁移到Grails 3。
在Grails 2中,我在datasource.groovy文件中,在Production-env中使用它作为我的JNDI名称
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 run-app”时出现此错误:
| 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 run-app时工作正常,并且可以很好地将WAR部署到Tomcat。
有人可以帮我把Grails 2中的“jndi表达”用于Grails 3吗?
答案 0 :(得分:0)
看起来您正在尝试在yml文件中使用groovy语法,但这不起作用。如果要使用groovy语法,可以创建application.groovy
文件(将与application.yml
文件合并)。
另请参阅spring-boot允许您通过env变量,属性,yml等注入属性的许多方法。http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html