【问题标题】:How to specify portable jndi datsource lookup in grails如何在 grails 中指定可移植的 jndi 数据源查找
【发布时间】:2012-11-05 13:27:30
【问题描述】:

我知道在 grails 中查找 JNDI 就像

datasource {
  jndiName = "java:comp/env/myDataSource"
}

这在 Tomcat 上效果很好。

在其他容器(WebLogic、JBOSS 等)上,相同事物的 jndiName 将只是 myDataSource 。问题是如何将其配置为通用且可移植,以便无需根据部署目标更改代码?

【问题讨论】:

    标签: tomcat grails weblogic datasource jndi


    【解决方案1】:

    您可能能够关闭您知道将在 Tomcat 中运行时设置的系统属性,而不是在其他任何地方设置,例如

    datasource {
      jndiName = "${System.getProperty('catalina.home') ? 'java:comp/env/' : ''}myDataSource"
    }
    

    【讨论】:

    • 有趣的想法!但是没有一种常见的直接方式吗?
    • 我使用了该解决方案一段时间,它可以很好地区分 Tomcat 服务器和 Weblogic 服务器。但是,我最近尝试将我的 Grails 应用程序放在 Glassfish 服务器上,但它不起作用,因为......我相信 Glassfish 也使用 Catalina,所以表达式确实返回了一个值。但是 Glassfish 需要命名为“myDatasource”,而 Tomcat 需要整个“jav:comp/env/”。
    • 所以我这样做了......不确定是否是“最好的方法”,但我在 Glassfish、Tomcat 和 Weblogic 上进行了测试,它确实适用于这些:jndiName = "${(System.getProperty ('catalina.home') && (System.getProperty('java.class.path')).trim().toLowerCase().indexOf('tomcat') > 0 ) ? 'java:comp/env/' : ''}jdbc/myGrails"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多