h2 не запускается программно

Я написал следующий код:

  private static void startH2(){
        Server server = null;
        try {
            server = Server.createTcpServer("-tcpAllowOthers").start();
            Class.forName("org.h2.Driver");
            Connection conn = DriverManager.
                    getConnection("jdbc:h2:tcp://localhost/~/test;MODE=PostgreSQL", "sa", "");
        } catch (Exception e) {
            LOG.error("Error while initialize", e);
        }
        System.out.println("finish");
    }
    public static void main(String [] args){
        startH2();
    }

Я запускаю свой основной метод и вижу следующую ситуацию:

Похоже Server.createTcpServer создает новый поток, не являющийся демоном.

но по URL localhost:8082 Я не вижу веб-консоль h2 (фактический результат - ERR_CONNECTION_REFUSED)

Как это исправить?

PS

Я заметил, что по URL

http://localhost:9092/

мой браузер загружает файл со странным содержимым:

если расшифровать этот текст я вижу следующее сообщение:

Несоответствие версии, версия драйвера - "0", но версия сервера - "15"

Я использую версию h2 1.4.182

1 ответ

Решение

H2 содержит несколько серверов:

Вы запустили TCP-сервер. Если вы хотите использовать браузер, вам также нужно запустить веб-сервер:

private static void startH2(){
    Server tcpServer = null;
    Server webServer = null;
    try {
        tcpServer = Server.createTcpServer("-tcpAllowOthers").start();
        System.out.println("TCP Server Port: " + tcpServer.getPort());
        Class.forName("org.h2.Driver");
        Connection conn = DriverManager.
                getConnection("jdbc:h2:tcp://localhost/~/test22;MODE=PostgreSQL", "sa", "");
        webServer = Server.createWebServer().start();
        System.out.println("Web Server (H2Console) Port: " + webServer.getPort());
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("finish");
}
Другие вопросы по тегам