使用 webAllowOthers 远程访问 H2 控制台

Posted

技术标签:

【中文标题】使用 webAllowOthers 远程访问 H2 控制台【英文标题】:H2 console remote access using webAllowOthers 【发布时间】:2017-05-16 15:14:08 【问题描述】:

我是H2数据库的新手。

我正在尝试通过网络浏览器访问我的控制台,但出现此错误:

抱歉,此服务器上的远程连接 ('webAllowOthers') 已禁用。

我在我的属性文件中声明了这个选项,如下所示:

spring.h2.console.settings.web-allow-others=true

我的属性文件名为 monitor.properties,位于具有 774 权限的用户主目录中。

我的第一个想法是我的属性文件被忽略了,并且正在采用默认选项。

但经过进一步调查,我发现了这一点:

2017-05-16 11:01:48 DEBUG[main] PropertySourcesPropertyResolver:81 - Searching for key 'spring.h2.console.settings.web-allow-others' in [commandLineArgs]
2017-05-16 11:01:48 DEBUG[main] PropertySourcesPropertyResolver:81 - Searching for key 'spring.h2.console.settings.web-allow-others' in [servletConfigInitParams]
2017-05-16 11:01:48 DEBUG[main] PropertySourcesPropertyResolver:81 - Searching for key 'spring.h2.console.settings.web-allow-others' in [servletContextInitParams]
2017-05-16 11:01:48 DEBUG[main] PropertySourcesPropertyResolver:81 - Searching for key 'spring.h2.console.settings.web-allow-others' in [systemProperties]
2017-05-16 11:01:48 DEBUG[main] PropertySourcesPropertyResolver:81 - Searching for key 'spring.h2.console.settings.web-allow-others' in [systemEnvironment]
2017-05-16 11:01:48 DEBUG[main] PropertySourcesPropertyResolver:81 - Searching for key 'spring.h2.console.settings.web-allow-others' in [random]
2017-05-16 11:01:48 DEBUG[main] PropertySourcesPropertyResolver:81 - Searching for key 'spring.h2.console.settings.web-allow-others' in [applicationConfigurationProperties]
2017-05-16 11:01:48 DEBUG[main] PropertySourcesPropertyResolver:90 - Found key 'spring.h2.console.settings.web-allow-others' in [applicationConfigurationProperties] with type [String] and value 'true'

所以,尽管我的属性文件正在被读取并且值 true 被识别,我仍然无法访问控制台。我进行了网络研究,但没有发现任何可以让我了解这个问题的东西。

这里有人遇到过类似的问题或有线索吗?

【问题讨论】:

这听起来像一个错误。我会在 Spring Boot 跟踪器中创建一个问题(并且不要忘记包含 Spring Boot 版本)。 你试过把这个属性spring.h2.console.enabled=true 我会做的@SlavaSemushin 谢谢你的帮助!!!! 是的,我做了@pvpkiran 关注关于远程访问的整个区块:spring.h2.console.enabled = true spring.h2.console.path=/h2-console spring.h2.console.settings.trace=true spring.h2.console.settings.web-allow-others=true spring.h2.console.settings.web-allow-others=true 为我工作! 【参考方案1】:

在您的代码中添加下面的 bean 并打开 http://remoteIp:8080/,它将在远程机器上工作

    @Bean(initMethod="start",destroyMethod="stop")
public org.h2.tools.Server h2WebConsoleServer () throws SQLException 
    return org.h2.tools.Server.createWebServer("-web","-webAllowOthers","-webDaemon","-webPort", "8080");

【讨论】:

以上是关于使用 webAllowOthers 远程访问 H2 控制台的主要内容,如果未能解决你的问题,请参考以下文章

H2 数据库控制台,设置 -webAllowOthers 是如何工作的?

docker 容器中的 H2 DB

Linux安装h2数据库

windows下创建h2集群,及java集成详细步骤

使用 DBCP 池在服务器模式下远程连接到 H2 数据库

使用 Java 应用程序远程连接到 H2 数据库