1 public void init(String... args) { 2port = Constants.DEFAULT_TCP_PORT; 3for (int i = 0; args != null && i < args.length; i++) { 4String a = args[i]; 5if (Tool.isOption(a, "-trace")) { 6trace = true; 7} else if (Tool.isOption(a, "-tcpSSL")) { 8ssl = true; 9} else if (Tool.isOption(a, "-tcpPort")) {10port = Integer.decode(args[++i]);11portIsSet = true;12} else if (Tool.isOption(a, "-tcpPassword")) {13managementPassword = args[++i];14} else if (Tool.isOption(a, "-baseDir")) {15baseDir = args[++i];16} else if (Tool.isOption(a, "-key")) {17key = args[++i];18keyDatabase = args[++i];19} else if (Tool.isOption(a, "-tcpAllowOthers")) {20allowOthers = true;21} else if (Tool.isOption(a, "-tcpDaemon")) {22isDaemon = true;23} else if (Tool.isOption(a, "-ifExists")) {24ifExists = true;25} else if (Tool.isOption(a, "-ifNotExists")) {26ifExists = false;27}28}29}TCP server running at tcp://192.168.1.126:9092 (others can connect)Web Console server running at http://192.168.1.126:8082 (others can connect)
在这里你会发现 , tcp的默认端口是9092 , web访问的端口是8082
文章插图
文章插图
从这两张图中也可以看出 , 带不带端口效果都是一致的 。
当然这些参数你也可以在H2的源码中找到相应的地方在 , 在这个类中:org.h2.engine.Constants 。
文章插图
在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控制台如下图
文章插图
这里有个配置功能 , 然后你一开始点击是能点击进去的 , 进入配置控制界面 。但是一保存时候发现一直要输入密码 , 关键是我前前后后找了1天都没找到密码是哪里设置的 。真心吐血 , 后面发现 , 保存之后他就会在windows系统中的用户目录下创建一个.h2.server.properties一个文件 , 自从有了这个文件就需要输入密码了 。删掉就没有了 。
后面我通过代码跟踪的形式去查了源码发现他的登录接口核心代码
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}
经验总结扩展阅读
- 酒精倒入下水道的危害
- 焖米饭需要多少水
- 釉下彩的碗有毒吗
- 白墙上的胶带留下印怎么去除
- 花胶干蒸5分钟还是泡发再蒸
- 桶装水怎么取下聪明盖
- 2023年10月17日是下葬的黄道吉日吗 2023年10月17日适合下葬吗
- 白水煮鸡蛋是冷水下锅还是开水下锅
- 霉豆瓣不清洗可以直接下酱吗
- 生日当天下雨不吉利吗 庆生旺运的方法有哪些