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秒鐘 。

推薦閱讀