• H2控制台的配置


    官方说: h2控制台配置文件.h2.server.properties 在用户的主目录.例如window安装用户主目录如下 C:Documents and Settings[username]. 配置包含应用的各种设置和h2启动自动调用参数信息。

    参数信息如下:

    • webAllowOthers: 允许其它电脑连接.
    • webPort: h2控制台的端口。
    • webSSL: use encrypted (HTTPS) connections.

    额外的信息如:

    上次登录的连接信息格式:

              <number>=<name>|<driver>|<url>|<user>

    例如: 1=Generic H2 (Embedded)|org.h2.Driver|jdbc:h2:~/test|sa

    一  h2服务端开启

    第一种方式,通过spring的工厂方法创建

        <!-- Spring中h2 TCP Server 配置 -->  
        <bean id="h2Server" class="org.h2.tools.Server"  
               factory-method="createTcpServer" init-method="start" destroy-method="stop">  
               <constructor-arg value="-tcp,-tcpAllowOthers,-tcpPort,9092" />  
        </bean>  

    第二种方式,直接使用Server创建。


    windows服务器端的数据连接配置如下

    url=jdbc:h2:tcp://192.168.108.221:6678/{文件的绝对路径}

    linux或者windows的操作系统的默认根目录+db文件路径

    url=jdbc:h2:tcp://192.168.108.221:6678/~/{文件的相对路径}

    比如linux系统默认目录为usr/vasuser/  tomcat目录为/usr/vasuser/tomcat/webapps/data/cashDb

    则访问端url 为~/tomcat/webapps/data/cashDb

    如果使用绝对路径,报错如下:


    二 调用远程h2服务

        package com.cyb.h2;
         
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.ResultSet;
        import java.sql.SQLException;
        import java.sql.Statement;
         
        import org.h2.tools.Server;
         
        /**
         * 作者 : iechenyb<br>
         * 类描述: 说点啥<br>
         * 创建时间: 2018年5月31日
         */
        public class H2Demo {
            private Server server;
            private String port = "9080";
            //linux   ~/tomcat/webapps/data/cashDb
            private String dbDir = "d://data/sample;CACHE_SIZE=32384;MAX_LOG_SIZE=32384;mv_store=false";// ./h2db/
            private String user = "sa";
            private String password = "";
         
            public void startServer() {
                try {
                    System.out.println("正在启动h2...");
                    server = Server.createTcpServer(new String[] { "-tcp", "-tcpAllowOthers", "-tcpPort", port }).start();
                } catch (SQLException e) {
                    System.out.println("启动h2出错:" + e.toString());
                    e.printStackTrace();
                    throw new RuntimeException(e);
                }
            }
         
            public void stopServer() {
                if (server != null) {
                    System.out.println("正在关闭h2...");
                    server.stop();
                    System.out.println("关闭成功.");
                }
            }
         
            public void useH2() {
                try {
                    Class.forName("org.h2.Driver");
                    Connection conn = DriverManager.getConnection("jdbc:h2:tcp://192.168.16.211:" + port + "/" + dbDir, user,
                            password);
                    Statement stat = conn.createStatement();
                    // insert data
                    stat.execute("DROP TABLE IF EXISTS TEST");
                    stat.execute("CREATE TABLE TEST(NAME VARCHAR)");
                    stat.execute("INSERT INTO TEST VALUES('Hello World')");
                    // use data
                    ResultSet result = stat.executeQuery("select name from test ");
                    int i = 1;
                    while (result.next()) {
                        System.out.println(i++ + ":" + result.getString("name"));
                    }
                    result.close();
                    stat.close();
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
         
            public static void main(String[] args) {
                System.out.println("*********start***********");
                H2Demo h2 = new H2Demo();
                h2.startServer();//调用远端服务时,不需要开启server
                h2.useH2();
                // h2.stopServer();
                System.out.println("*********end***********");
            }
        }


    三 开放h2访问界面

        <!-- 使用监听器启动和停止数据库 -->
              <listener>
                <listener-class>me.gacl.web.listener.H2DBServerStartListener</listener-class>
            </listener>
            
            <!-- 使用H2控制台的Servlet H2控制台是一个独立的应用程序,包括它自己的Web服务器,但它可以作为一个servlet作为-->
            <servlet>
                <servlet-name>H2Console</servlet-name>
                <servlet-class>org.h2.server.web.WebServlet</servlet-class>
                 <init-param>
                    <param-name>webAllowOthers</param-name>
                    <param-value></param-value>
                </init-param>
                <init-param>
                    <param-name>trace</param-name>
                    <param-value></param-value>
                </init-param>
                <load-on-startup>1</load-on-startup>
            </servlet>
            <!-- 映射H2控制台的访问路径 -->
            <servlet-mapping>
                <servlet-name>H2Console</servlet-name>
                <url-pattern>/console/*</url-pattern>
            </servlet-mapping>

    参考文档:

    https://www.cnblogs.com/xdp-gacl/p/4190424.html

    https://blog.csdn.net/firetaker/article/details/5909375

  • 相关阅读:
    如何提高IT团队的执行力?
    Internet Explorer 安全区域注册表项说明
    用C#编写ActiveX控件(一) 转载
    用C#编写ActiveX控件(二) 转载
    关于《用C#编写ActiveX控件》的几点说明 转载
    【经典】单调栈+离线+线段树区间更新——求所有子区间gcd之和 icpc cerc 2019 b
    SQL语句
    Windows 程序设计学习记录(1)类的定义和应用
    Windows 程序设计学习记录(2)数据链表删除,增加的算法
    推荐一些博客网站
  • 原文地址:https://www.cnblogs.com/interdrp/p/12622098.html
Copyright © 2020-2023  润新知