SAP HANA DB 连接在控制台应用程序中工作正常,但同样的事情在服务中不起作用

Posted

技术标签:

【中文标题】SAP HANA DB 连接在控制台应用程序中工作正常,但同样的事情在服务中不起作用【英文标题】:SAP HANA DB connection works fine in console application, but same thing is not working from service 【发布时间】:2018-04-14 22:40:53 【问题描述】:

SAP HANA DB 连接在控制台应用程序中工作正常,但从服务或 Web 应用程序调用时,同样的事情无法正常工作。 它显示错误,如没有合适的驱动程序。我已经添加了 ngdbc.jar。 我用过 Websphere8.5 服务器和 java 1.6

Class.forName("com.sap.db.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:sap://hostname:30015/?autocommit=false&user=myuser&password=mypassword");

【问题讨论】:

“没有合适的驱动程序”向我提示驱动程序类已加载,但 URL 语法错误。 JDK 6?您需要立即升级。那个 JDK 早已过了它的支持生命周期。 JDK 8 是唯一受支持的版本。 JDK 9 刚刚发布。您需要考虑货币。 Duffymo,你能告诉我正确的 URL 语法吗? 不,我不使用 SAS HANA。这是帮助:help.sap.com/doc/0eec0d68141541d1b07893a39944924e/2.0.01/en-US/… 【参考方案1】:

不再赘述上述观点,您的 JDK 将在 2018 年 4 月停止服务,现在考虑迁移到 Java 8。当您说“数据库连接在控制台应用程序中工作正常”时,我假设您的意思是您能够成功地从控制台测试连接。从您粘贴的 sn-p 中,您的应用程序失败的原因是您没有使用您在 WAS 中配置的数据源并且测试连接正在使用该数据源。相反,您尝试直接访问 DriverManager,这将绕过服务器对 JDBC 的管理,包括连接和语句池。该类无法加载,因为应用程序类路径未配置为直接加载这些类。 Java EE 应用程序通常会通过资源引用、@Datasource 或其他方式将您在 WAS 中配置的数据源注入您的应用程序。这个SO post 解释了Datasource 和DriverManager 之间的区别。

【讨论】:

谢谢罗。我已经在驱动程序管理器中添加了 ngdbc jar,现在它可以工作了。

以上是关于SAP HANA DB 连接在控制台应用程序中工作正常,但同样的事情在服务中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

HANA系列SAP HANA DB 和SAP HANA studio version查看

如何从 Rstudio Connect 连接 SAP Hana。 R 闪亮

HANA系列SAP 第一篇EXCEL连接SAP HANA的方法(ODBC)

[SAP HANA] SAP HANA 管理员连接不上, 连接超限 保留管理员连接

DB2 Connection - 在 IBM DataStudio 中工作,但在 java 程序中失败

HANA系列SAP 第二篇EXCEL连接SAP HANA的方法(ODBC)