0

我写了以下代码:

  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创建新的非守护线程。

但通过 urllocalhost:8082我看不到 h2 web 控制台(实际结果 - ERR_CONNECTION_REFUSED

如何解决这个问题?

附言

我注意到通过 url

http://localhost:9092/

我的浏览器下载了包含奇怪内容的文件:

在此处输入图像描述

如果要解码此文本,我会看到以下消息:

版本不匹配,驱动版本为“0”而服务器版本为“15”</p>

我用的是h2版本1.4.182

4

1 回答 1

1

H2 包含多个服务器

您已经启动了 TCP 服务器。如果要使用浏览器,还需要启动 Web Server:

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");
}
于 2015-12-18T08:45:09.780 回答