springboot H2 linux下搭建使用( 二 )


在这里你会发现,tcp的默认端口是9092,web访问的端口是8082

springboot H2 linux下搭建使用

文章插图
springboot H2 linux下搭建使用

文章插图
从这两张图中也可以看出,带不带端口效果都是一致的 。
当然这些参数你也可以在H2的源码中找到相应的地方在,在这个类中:org.h2.engine.Constants 。
springboot H2 linux下搭建使用

文章插图
在linux系统中直接将其以程序的形式进行启动后 , 其他应用就可以通过remote的形式进行调用了 。友情提示,启动H2的时候需要使用nohup进行启动 。
这里我将我的H2配置信息发出来
1 #设置H2驱动 2 spring.datasource.driver-class-name=org.h2.Driver 3 #设置H2远程TCP地址 4 spring.datasource.url = jdbc:h2:tcp://192.168.?.???/~/test1 5 #设置web界面是否启用 6 spring.h2.console.enabled=true 7 #设置其他ip地址是否可以访问webConsole 8 spring.h2.console.settings.web-allow-others=true 9 #设置H2默认地址10 spring.h2.console.path=/h211 #实际地址就是 url:端口/程序默认地址/h2 这些配置信息可以去 org.springframework.boot.autoconfigure.h2下的H2ConsoleProperties中进行查看,真的不是我不想多点参数控制,而是springboot就只开放了这些 。这是真心难受啊 。其他小知识,在h2的webConsole控制台如下图
springboot H2 linux下搭建使用

文章插图
这里有个配置功能,然后你一开始点击是能点击进去的,进入配置控制界面 。但是一保存时候发现一直要输入密码,关键是我前前后后找了1天都没找到密码是哪里设置的 。真心吐血 , 后面发现 , 保存之后他就会在windows系统中的用户目录下创建一个.h2.server.properties一个文件,自从有了这个文件就需要输入密码了 。删掉就没有了 。
后面我通过代码跟踪的形式去查了源码发现他的登录接口核心代码
【springboot H2 linux下搭建使用】 1 private String adminLogin() { 2String password = attributes.getProperty("password"); 3if (password == null || password.isEmpty() || !server.checkAdminPassword(password)) {//将if屏蔽了就可以不用管密码了 4return "adminLogin.jsp"; 5} 6String back = (String) session.remove("adminBack"); 7session.put("admin", true); 8return back != null ? back : "admin.do"; 9}1011 boolean checkAdminPassword(String password) {12if (adminPassword == null) {13return false;14}15byte[] salt = Arrays.copyOf(adminPassword, 32);16byte[] hash = new byte[32];17System.arraycopy(adminPassword, 32, hash, 0, 32);18return Utils.compareSecure(hash, SHA256.getHashWithSalt(password.getBytes(StandardCharsets.UTF_8), salt));19}看到这里的小伙伴应该知道他的坑爹之处了吧 , 密码不能为空 , 管理员默认密码也不能为空 。关键是我执行到adminPassword的时候他是空的 。真的是坑爹啊 。当然将其屏蔽调就可以了,我调整之后,我的系统进入webConsole的配置界面已经不需要这个该死的密码认证了 。真是白花了我一天的时间 , 在这里我为那1天时间默哀10秒钟 。

推荐阅读