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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM