Принимая неправильный номер порта (30015) в геосервере, когда я пытаюсь создать хранилище данных, База данных SAP HANA CLOUD

Гео-сервер принимает неправильный номер порта, когда я пытаюсь создать хранилище данных, из-за этого я не могу создать хранилище. База данных - облако SAP Hana.

Из SAP Hana cloud запускаю геосервер 2.14. В геосервере war я добавил gt-jdbc-hana-21.0.jar (который предоставляется геоинструментом) и ** 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 с номером порта  введите описание изображения здесь  введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Журнал геосервера


person Harish CHH    schedule 11.03.2019    source источник
comment
По какой причине в конце имени хоста стоит косая черта?   -  person Abdel Dadouche    schedule 12.03.2019
comment
Это по ошибке, нет причин   -  person Harish CHH    schedule 12.03.2019
comment
для дальнейшего использования всегда лучше вставлять текст файла журнала, а не картинку   -  person Ian Turton    schedule 12.03.2019


Ответы (3)


Из быстрого просмотра code кажется, что хранилище данных Hana не использует предоставленную информацию о порте.

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();
}

Я недостаточно знаю о Хане, чтобы сказать, ошибка это или нет. Но вы можете отправить отчет об ошибке или запрос на улучшение на проект jira.

person Ian Turton    schedule 12.03.2019

Загрузите исходный код gt-jdbc-hana-21.0 из mvnrepository изменить код в следующем классе

В классе HanaDataStoreFactory измените метод 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

/*
 *    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;

    }
}

после изменения соответствующего класса скопируйте содержимое pom из gt-jdbc-hana-21.0. Построй своего знатока и возьми банку.

person Harish CHH    schedule 20.03.2019

Нет, номер порта не является обязательным для HANA, поскольку для его получения используется номер экземпляра.

Номер порта строится вокруг номера экземпляра, на самом деле так: 3

Итак, если вы подключаетесь с использованием номера экземпляра, ваш клиент сначала свяжется с БД СИСТЕМЫ.

Суффикс порта по умолчанию для системной базы данных - 13.

При использовании HANA 1.0, где номер экземпляра по умолчанию - 00, поэтому будет использоваться порт 30013 для связи с системной базой данных. А при использовании HANA 2.0 номер экземпляра по умолчанию - 90, поэтому для связи с БД СИСТЕМЫ будет использоваться порт 39013.

Затем ваш клиент спросит у СИСТЕМНОЙ БД, какой суффикс порта для БД, которую вы хотите подключить, или порт БД по умолчанию. БД по умолчанию обычно называется HDB (или HXE для SAP HANA, экспресс-версия.

Суффикс порта по умолчанию для БД по умолчанию - 15.

Тогда ваш клиент подключится напрямую к нужному порту.

Итак, вот как это происходит, когда вы не указываете номер порта, чтобы сделать его коротким: - перейдите в системную базу данных и спросите правильный порт, затем подключитесь к нему

Что-то действительно важное - проверить, не препятствуют ли ваши брандмауэры соединениям (вы можете использовать telnet для проверки).

Итак, чтобы это работало, вам нужно будет установить номер порта в свойстве instance.

person Abdel Dadouche    schedule 14.03.2019
comment
Спасибо за ответ, даже если я даю правильный идентификатор экземпляра, все еще не принимается должным образом. вы можете видеть на изображениях. - person Harish CHH; 18.03.2019
comment
Проблема с кодом. Номер экземпляра, который они используют как целое число. Скажем, номер вашего экземпляра 01, он усечет 0, а затем станет 1 (поскольку тип данных целочисленный). Тогда это неправильный номер экземпляра. Затем они берут номер порта по умолчанию. Проблема с кодом. - person Harish CHH; 19.03.2019
comment
Почему бы не создать запрос на перенос, чтобы изменить код или создать проблему с GitHub в своем репозитории? - person Abdel Dadouche; 19.03.2019
comment
Исправил, изменив код. даже поднять вопрос на форуме геоинструментов - person Harish CHH; 20.03.2019