H2数据库自动服务器模式:远程访问Web控制台

时间:2016-03-30 13:33:29

标签: java scala h2

我对H2 Database还不熟悉。作为PoC的一部分,我使用H2数据库(版本:1.4.187)来模拟MS SQL Server数据库。我有一个应用程序,比如app1生成数据并保存到H2。另一个应用程序app2需要从H2数据库中读取并处理它读取的数据。我正在尝试使用Auto Server mode,这样即使其中一个应用程序关闭,其他应用程序也能够读/写数据库。

在阅读了多个示例之后,我找到了如何构建h2 url并显示如下:

jdbc:h2:~/datafactory;MODE=MSSQLServer;AUTO_SERVER=TRUE;

启用tcp和远程访问,如下所示:

org.h2.tools.Server.createTcpServer("-tcpAllowOthers","-webAllowOthers").start()

有了这个,我就可以写入数据库了。现在,我想使用h2-web-console应用程序读取数据。我可以从我的本地机器上做到这一点。但是,我无法理解如何从另一台计算机远程连接到此数据库。

我的工厂是在ubuntu机器上运行这两个应用程序,我可以使用我的机器上的Web控制台监控数据。这种方法不可能吗? 我怎么解决这个问题?

或者我是否需要使用服务器模式并明确启动h2服务器?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

默认情况下,为H2数据库禁用远程连接以进行保护。要启用对TCP服务器的远程访问,需要使用选项-tcpAllowOthers或其他标志-webAllowOthers-pgAllowOthers启动TCP服务器 。

要启动Web控制台服务器(H2控制台工具)和启用了远程连接的TCP服务器,您必须使用以下内容

java -jar /path/to/h2.jar -web -webAllowOthers -tcp -tcpAllowOthers -browser

可以在docs here中找到更多信息,并且可以配置控制台设置from here

答案 1 :(得分:0)

不完全确定,但查看以前针对相同主题回答的文档和其他问题,网址应该是这样的:

jdbc:h2:tcp://<host>:<port>/~/datafactory;MODE=MSSQLServer;AUTO_SERVER=TRUE;

似乎主机可能不是localhost,数据库可能不在内存中

答案 2 :(得分:0)

是否需要H2网络控制台?

您可以使用已启动的TCP服务器使用其他SQL工具。我使用 SQuirreL SQL Client http://squirrel-sql.sourceforge.net/)连接到不同的数据库。

如果您需要一个Web界面,您可以使用 Adminer https://www.adminer.org/),它可以连接到不同的数据库供应商,包括MS SQL,这恰好是您正在运行H2的模式。有一个适用于Ubuntu的Adminer Debian软件包。