Tomcat 7 的 HANA 云数据源问题

HANA Cloud Data Source issue with Tomcat 7

我需要在 HANA Cloud 中部署基于 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 查找

@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

帮我解决这个问题

谢谢 奇兰杰维门将

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

HANA Cloud Platform documentation 中,您可以找到两种不同的如何使用 tomcat 7 (Java Web SDK) 获取数据库连接的方法:

  1. Adding Application-Managed Persistence With JPA
  2. Adding Persistence With 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>(包括尖括号)。为此,只需删除您当前的数据源绑定并添加一个新绑定。