Grails 3 JNDI数据源为Tomcat,Weblogic,Glassfish - Vs Grails 2

时间:2016-11-16 23:20:16

标签: grails groovy jndi

我正在尝试从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吗?

1 个答案:

答案 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