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-сервер (для клиентов JDBC H2),
- веб-сервер (для браузеров, консольное приложение H2) и
- Сервер PG ( для клиентов PostgreSQL).
Вы запустили 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");
}