【问题标题】:Setting up JNDI connection with Spring Boot使用 Spring Boot 设置 JNDI 连接
【发布时间】:2017-01-31 10:05:44
【问题描述】:

我正在尝试为我的 WAR 文件设置 JNDI 数据库连接,该文件将部署在 WebLogic 12c 上。这就是我所拥有的:

@Bean
public DataSource dataSource() throws DataSourceLookupFailureException {
  JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();

  return dataSourceLookup.getDataSource("jndiName");
}

application.properties 文件中:

spring.datasource.jndi-name=jndiName

这是从 Spring Boot 指南的两个不同部分拼凑而成的:

我很困惑,为什么jndiName 被声明了两次?我的操作是否正确 - 这是正确的设置方式吗?

我的印象是 Spring Boot 要么会自动从 application.properties 检索 JNDI 名称,因此我不需要将 JNDI 名称硬编码到 getDataSource() 中,或者如果我硬编码 JNDI 名称,那么我不会'首先不需要在application.properties 中包含该属性。

根据我的解释,本指南中涉及如何建立 JNDI 连接的两个部分似乎相互矛盾。我怎么了?正确的设置方法是什么?

【问题讨论】:

  • 这不是正确的方法。只需在 application.properties 中指定 JNDI 名称,Spring Boot 就会进行查找。删除您自己的查找。你要么不是两者(除非你有多个数据源,你必须找到另一种方法)。您所指的部分是关于配置自定义数据源,即默认配置选项无法满足您的需求。
  • @M.Deinum 我是新手,所以请多多包涵。所以你是说整个dataSource() 是不必要的吗?我只需要application.properties 中的那条线吗?此外,文件中是否还需要其他任何内容才能使其有效使用?
  • 不,这基本上就是你所需要的,application.properties 中的条目。

标签: java spring spring-boot database-connection jndi


【解决方案1】:

删除您的自定义 bean 并使用 application.properties 但在本地环境中,如果您想运行嵌入式容器,此方法将不起作用

要在嵌入式容器中使用 H2 或任何其他数据库,请在 main 方法中定义配置文件,然后配置您的数据源。这样它在本地和生产中都可以工作

【讨论】:

    猜你喜欢
    • 2016-08-28
    • 2019-05-19
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    相关资源
    最近更新 更多