【问题标题】:Spring Boot: failed to load JNDI variables into yml configuration fileSpring Boot:无法将 JNDI 变量加载到 yml 配置文件中
【发布时间】:2018-02-01 10:42:27
【问题描述】:

根据Spring Boot documentation about Externalized configuration,我尝试将一个JNDI变量加载到我的yml配置文件中,如下所示:

spring:
  # Show or not log for each sql query
  jpa:
    show-sql: java:global/bc-api-immop/hibernate/show_sql

而且它不起作用。

我的 JNDI 上下文中有我的变量:

我也试过这个:

spring:
  # Show or not log for each sql query
  jpa:
    show-sql
      jndi-name: java:global/bc-api-immop/hibernate/show_sql

但是,结果还是一样。 你知道我做错了什么吗?

听起来很奇怪,但我也有这段代码,而且它可以工作:

spring:
  # Set here configurations for the database connection
  datasource:
    jndi-name: java:jboss/datasources/bc-appli-as400-ds

编辑:当我这样做时,它可以工作(所以我的问题真的来自获取我的 JNDI 变量):

spring:
  # Show or not log for each sql query
  jpa:
    show-sql: true

【问题讨论】:

    标签: spring spring-boot yaml jndi


    【解决方案1】:

    你编写 yaml 的方式才是真正的问题

    一般概念是key: value,所以通过编写show-sql,spring boot 期望值truefalse,因为它出现在Appendix A. Common application properties 上,所以您的属性配置失败是正常的,我很确定这显示在您的日志文件中的某处。

    在第一个示例中,当您编写 show-sql: java:global/bc-api-immop/hibernate/show_sql 时,您实际上是在回答“我应该向您展示生成的 SQL 语句”这个问题吗? em>”,我们都明白它对 spring boot 没有任何意义:)

    另一方面,你最后的陈述是正确的。您在 yaml 集合项 datasource 下定义属性 jndi-name:,其值为 java:jboss/datasources/bc-appli-as400-ds

    我还建议花 10 分钟阅读这篇文章 Learn X in Y minutes

    所以正确的方法可能是

    spring:
      # Set here configurations for the database connection
      datasource:
        jndi-name: java:jboss/datasources/bc-appli-as400-ds
      jpa:
        show-sql: true
    

    如果我能帮助你更多,请告诉我

    【讨论】:

    • 感谢您的回答。实际上,您的最后一个建议就是我的建议。但是现在,我想根据我的 JNDI 变量配置事实以显示 SQL(或不显示)。我不明白为什么在“show-sql”之后使用“jndi-name”属性会失败。
    • 这是不可能的。 JNDI 变量将为您提供连接。 show-sql 指的是 JPA 实现,它与实际连接无关。我想我错过了一些关于你想做的事情。顺便说一句,如果您喜欢我的回答,请将其标记为可以接受:)
    猜你喜欢
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 2020-08-23
    相关资源
    最近更新 更多