当我尝试创建数据存储、数据库 SAP HANA CLOUD 时,在地理服务器中使用了错误的端口 (30015) 号
Taking a wrong port (30015) number in geoserver when I try to create datastore,Database SAP HANA CLOUD
当我尝试创建 数据存储 时,Geo-server 使用了错误的端口号,因此我无法创建存储。
数据库是sap Hana cloud .
来自 SAP Hana 云 我正在启动 geoserver 2.14。
在 geoserver war 我添加了 gt-jdbc-hana-21.0.jar (由 geotool 提供)和 **ngdbc.jar **.
我从云端启动了地理服务器,然后创建了工作区。然后我尝试创建数据存储。
我填写了所有必填字段。
但是我给的端口号是 30047(我的 hana 云端口号),但它正在尝试连接不存在的端口号 30015。
因此,我无法创建数据存储,请任何人帮助解决问题是什么以及如何解决它。
我收到错误消息
Error creating data store, check the parameters.
Error message: Unable to obtain connection:
Cannot create PoolableConnectionFactory (SAP DBTech JDBC: Cannot connect to jdbc:sap://vadbi1l.nwtrial.od.sap.biz// [Cannot connect to host vadbi1l.nwtrial.od.sap.biz:30015 [Connection refused (Connection refused) (local port 58788 to address 0.0.0.0, remote port 30015 to address 10.117.96.92 (vadbi1l.nwtrial.od.sap.biz))], -813.].)
带端口号的 Hana 数据库
通过快速查看 code,Hana Datastore 似乎没有使用提供的端口信息。
public String buildUrl() {
StringBuilder sb = new StringBuilder();
sb.append("jdbc:sap://");
sb.append(host);
sb.append("/?instanceNumber=");
sb.append(Integer.toString(instance));
if ((database != null) && !database.isEmpty()) {
sb.append("&databaseName=");
sb.append(database);
}
return sb.toString();
}
我对 Hana 的了解还不够多,无法判断这是不是一个错误。但是您可以在 project jira.
提出错误报告或增强请求
不,端口号对于 HANA 不是强制性的,因为实例号用于派生它。
端口号是围绕实例号构建的,实际上是这样的:
3
因此,如果您使用实例编号进行连接,那么您的客户端实际上会首先联系 SYSTEM DB。
系统数据库的默认端口后缀是 13。
当使用默认实例编号为 00 的 HANA 1.0 时,使用的端口将是 30013 以联系 SYSTEM DB。当使用 HANA 2.0 时,默认实例编号为 90,因此使用的端口将是 39013 以联系 SYSTEM DB。
然后你的客户端会询问SYSTEM DB你要连接的DB的端口后缀是什么或者默认DB的端口。默认数据库通常命名为 HDB(或 HXE for SAP HANA,express edition。
默认数据库的默认端口后缀是 15。
然后您的客户端将直接连接到正确的端口。
所以,当您不提供端口号以缩短端口号时,情况是这样的:
- 转到系统数据库并询问正确的端口然后连接到它
真正重要的是检查您的防火墙是否阻止了连接(您可以使用 telnet 来验证)。
所以要让它工作,你需要在实例属性中设置端口号。
从 mvnrepository 下载 gt-jdbc-hana-21.0 源代码
更改以下 class
中的代码
在 HanaDataStoreFactory 中 class 更改 getJDBCUrl 方法
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
protected String getJDBCUrl(Map params) throws IOException {
String host = (String) HOST.lookUp(params);
int instance = (Integer) INSTANCE.lookUp(params);
String database = (String) DATABASE.lookUp(params);
Integer port = (Integer) PORT.lookUp(params);
HanaConnectionParameters cp = new HanaConnectionParameters(host, instance,
database,port);
return cp.buildUrl();
}
在 HanaConnectionParameters class
/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2018, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.data.hana;
/**
* SAP HANA connection parameters.
*
* @author Stefan Uhrig, SAP SE
*/
public class HanaConnectionParameters {
/**
* SAP HANA connection parameters constructor.
*
* @param host The database host.
* @param instance The database instance.
* @param database The name of the tenant database. Set to null or empty string if the database
* is a single-container system. Set to SYSTEMDB to connect to the system database of a
* multi-container system.
*/
public HanaConnectionParameters(String host, int instance, String database,int port) {
super();
this.host = host;
this.instance = instance;
this.database = database;
this.port = port;
}
private String host;
private Integer instance;
private String database;
private Integer port;
public String getHost() {
return host;
}
public Integer getInstance() {
return instance;
}
public String getDatabase() {
return database;
}
public Integer getPort() {
return this.port;
}
/**
* Builds a JDBC connection URL.
*
* @return Returns the JDBC connection URL corresponding to these parameters.
*/
public String buildUrl() {
String url = "jdbc:sap://" + this.host + ":" + this.port;
return url;
}
}
在相应的 class 中更改后,从 gt-jdbc-hana-21.0 复制 pom 内容。
构建你的 maven 并获取 jar 。
Geo-server 使用了错误的端口号,因此我无法创建存储。 数据库是sap Hana cloud .
来自 SAP Hana 云 我正在启动 geoserver 2.14。 在 geoserver war 我添加了 gt-jdbc-hana-21.0.jar (由 geotool 提供)和 **ngdbc.jar **.
我从云端启动了地理服务器,然后创建了工作区。然后我尝试创建数据存储。 我填写了所有必填字段。 但是我给的端口号是 30047(我的 hana 云端口号),但它正在尝试连接不存在的端口号 30015。 因此,我无法创建数据存储,请任何人帮助解决问题是什么以及如何解决它。
我收到错误消息
Error creating data store, check the parameters.
Error message: Unable to obtain connection:
Cannot create PoolableConnectionFactory (SAP DBTech JDBC: Cannot connect to jdbc:sap://vadbi1l.nwtrial.od.sap.biz// [Cannot connect to host vadbi1l.nwtrial.od.sap.biz:30015 [Connection refused (Connection refused) (local port 58788 to address 0.0.0.0, remote port 30015 to address 10.117.96.92 (vadbi1l.nwtrial.od.sap.biz))], -813.].)
带端口号的 Hana 数据库
通过快速查看 code,Hana Datastore 似乎没有使用提供的端口信息。
public String buildUrl() {
StringBuilder sb = new StringBuilder();
sb.append("jdbc:sap://");
sb.append(host);
sb.append("/?instanceNumber=");
sb.append(Integer.toString(instance));
if ((database != null) && !database.isEmpty()) {
sb.append("&databaseName=");
sb.append(database);
}
return sb.toString();
}
我对 Hana 的了解还不够多,无法判断这是不是一个错误。但是您可以在 project jira.
提出错误报告或增强请求不,端口号对于 HANA 不是强制性的,因为实例号用于派生它。
端口号是围绕实例号构建的,实际上是这样的: 3
因此,如果您使用实例编号进行连接,那么您的客户端实际上会首先联系 SYSTEM DB。
系统数据库的默认端口后缀是 13。
当使用默认实例编号为 00 的 HANA 1.0 时,使用的端口将是 30013 以联系 SYSTEM DB。当使用 HANA 2.0 时,默认实例编号为 90,因此使用的端口将是 39013 以联系 SYSTEM DB。
然后你的客户端会询问SYSTEM DB你要连接的DB的端口后缀是什么或者默认DB的端口。默认数据库通常命名为 HDB(或 HXE for SAP HANA,express edition。
默认数据库的默认端口后缀是 15。
然后您的客户端将直接连接到正确的端口。
所以,当您不提供端口号以缩短端口号时,情况是这样的: - 转到系统数据库并询问正确的端口然后连接到它
真正重要的是检查您的防火墙是否阻止了连接(您可以使用 telnet 来验证)。
所以要让它工作,你需要在实例属性中设置端口号。
从 mvnrepository 下载 gt-jdbc-hana-21.0 源代码 更改以下 class
中的代码在 HanaDataStoreFactory 中 class 更改 getJDBCUrl 方法
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
protected String getJDBCUrl(Map params) throws IOException {
String host = (String) HOST.lookUp(params);
int instance = (Integer) INSTANCE.lookUp(params);
String database = (String) DATABASE.lookUp(params);
Integer port = (Integer) PORT.lookUp(params);
HanaConnectionParameters cp = new HanaConnectionParameters(host, instance,
database,port);
return cp.buildUrl();
}
在 HanaConnectionParameters class
/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2018, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.data.hana;
/**
* SAP HANA connection parameters.
*
* @author Stefan Uhrig, SAP SE
*/
public class HanaConnectionParameters {
/**
* SAP HANA connection parameters constructor.
*
* @param host The database host.
* @param instance The database instance.
* @param database The name of the tenant database. Set to null or empty string if the database
* is a single-container system. Set to SYSTEMDB to connect to the system database of a
* multi-container system.
*/
public HanaConnectionParameters(String host, int instance, String database,int port) {
super();
this.host = host;
this.instance = instance;
this.database = database;
this.port = port;
}
private String host;
private Integer instance;
private String database;
private Integer port;
public String getHost() {
return host;
}
public Integer getInstance() {
return instance;
}
public String getDatabase() {
return database;
}
public Integer getPort() {
return this.port;
}
/**
* Builds a JDBC connection URL.
*
* @return Returns the JDBC connection URL corresponding to these parameters.
*/
public String buildUrl() {
String url = "jdbc:sap://" + this.host + ":" + this.port;
return url;
}
}
在相应的 class 中更改后,从 gt-jdbc-hana-21.0 复制 pom 内容。 构建你的 maven 并获取 jar 。