0

我需要在 HANA 云中部署基于 Spring 的 Java 应用程序,我无法获取数据源给出错误

2016 05 17 14:33:45#INFO#LJS_OUTPUT#Thread-11#14:33:45.128 [localhost-startStop-1] ERROR c.s.c.r.k.p.client.PersistenceDataSourceFactory - An exception occurred during rest communication with local config service: java.io.FileNotFoundException: http://localhost:20002/config/v1/services/persistence/jdbc/someothername|
2016 05 17 14:33:45#INFO#LJS_OUTPUT#Thread-11#14:33:45.129 [localhost-startStop-1] ERROR c.s.c.r.k.p.client.PersistenceDataSourceFactory - Retrieved persistence properties are null!|

这是数据源配置详细信息

数据源绑定 和我的 web.xml 如下

<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/someothername</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
</resource-ref>

我尝试了 JNDI Lookup

@Bean
  public DataSource getDataSource() {
  final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
        dsLookup.setResourceRef(true);
        DataSource dataSource = dsLookup.getDataSource("jdbc/someothername");
        return dataSource;
  }

我直接累了

@Resource
DataSource dataSource

并且

@Resource("jdbc/someothername")
DataSource dataSource

帮我解决这个问题

谢谢 Chiranjeevi GK

4

1 回答 1

2

看到您的数据库 ID 被命名为tutorial并且您使用 HANA 试用实例,我假设您只需要一个数据源/模式。

HANA Cloud Platform 文档中,您可以找到两种不同的方法来获取与 tomcat 7 (Java Web SDK) 的数据库连接:

  1. 使用 JPA 添加应用程序管理的持久性
  2. 使用 JDBC 添加持久性

最好的方法是查看这些教程并选择您喜欢的方式。教程提供了很多细节。

我的猜测是,这个问题是因为你给你的数据源一个自定义名称(“ someothername ”)引起的。如果您只使用一个数据源,则应始终将其称为DefaultDB

<resource-ref>
  <res-ref-name>jdbc/DefaultDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
</resource-ref>

然后您的 JDBC 查找如下所示:

InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/DefaultDB");

然后将调用 HANA Cloud Cockpit 中的数据源<default>(包括尖括号)。为此,只需删除您当前的数据源绑定并添加一个新绑定。

数据源绑定示例

于 2016-05-18T07:16:56.600 回答