proxool+hsqldb

Posted 书升

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了proxool+hsqldb相关的知识,希望对你有一定的参考价值。

使用hsqldb数据库,开发环境eclipse,jdk8.0

Dsqldb数据库

1、下载包:hsqldb.jar

2、新建项目,复制到项目WebContent -> WEB -> INF -> lib下面,右键选择 Build Path  ->  Add to Build Path

3、在项目中找到Referenced Libraries点击,选择hsqldb.jar -> org.hsqldb.server -> Server.class -> Server 右键 选择 Run as -> 1 JAVA Application 启动项目

4、选择hsqldb.jar -> org.hsqldb.util -> DatabaseManagerSwing.class -> DatabaseManagerSwing 右键 选择 Run as -> JAVA Application 启动数据库

5、之后会弹出窗口,在第二个下拉框中 hsqldb database server ,点击OK登录(其他不需做改变),这里是指以hsqldb的客户端登录

Proxool

1、下载:官方网址:http://proxool.sourceforge.net/servlets.html (包:proxool-0.9.1.jar下载解压缩,之后会在lib有两个包,在jarjar有两个包,导入到项目lib中(包为:jarjar-0.6.jar、proxool-0.9.1.jar、proxool-cglib.jar、cglib-nodep-2.1_3.jar));

在之后的测试代码中,还需下载commons-dbcp-1.2.2.jar、commons-io-1.3.2.jar、commons-lang-2.4.jar、commons-logging-1.0.4.jar、commons-logging-api-1.1.jar、commons-pool-1.4.jar(commons包)

测试代码:

eclipse连接dsqldb数据库

技术分享
package com.hsqldb;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

//使用hsqldb数据库连接
public class hsqlconfig {

    public static void main(String[] args) {
        Connection conn = null;
        ResultSet rs = null;
        try {
            //选择dsqldb.jar -> org.hsqldb.jdbc -> JDBCDriver.class -> JDBCDriver右键选择Copy Qualified Name 
            //粘贴到这里。这里的意思就是告诉eclipse说你去给我加载dsqldb的数据库驱动
            Class.forName("org.hsqldb.jdbc.JDBCDriver"); 
            //选择dsqldb.jar -> org.hsqldb.util -> DatabaseManagerSwing.class -> DatabaseManagerSwing右键选择Copy Qualified Name
            //之后会弹出dsqldb客户端登录窗体,选择 URL 复制 jdbc:hsqldb:hsql://localhost/
            //默认dsqldb账号为sa,密码为空;
            conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/","SA","");
            Statement stmt = conn.createStatement();
            rs = stmt.executeQuery("select count(*) as ant from userinfo");
            if(rs!=null){
                while(rs.next()){
                    System.out.println(rs.getInt("ant"));
                }
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
dsqldb

 

 

eclipse连接hsqldb数据库,使用JAVA配置

技术分享
package com.proxool;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

//直接java编写配置
public class JavaProxool {

    public static void main(String[] args) {
        //Properties 配置文件,用户存放系统配置信息等
        Properties info = new Properties();
        info.setProperty("proxool.maximum-connection-count", "20");
        info.setProperty("proxool.house-keeping-test-sql", "select CURRENT_DATE");
        info.setProperty("user", "sa");
        info.setProperty("password", "");
        String alias = "test";
        String driverClass = "org.hsqldb.jdbc.JDBCDriver";
        String driverUrl = "jdbc:hsqldb:hsql://localhost/";
        String url = "proxool." + alias + ":" + driverClass + ":" + driverUrl;
        
        try {
            //加载驱动包(proxool的驱动包)
            Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
        } catch (ClassNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        Connection conn = null;
        ResultSet rs = null;
        try {
            //执行连接过程,其中url是完整的路径,info是配置信息
            conn = DriverManager.getConnection(url, info);
            //声明一个可执行sql语句的对象
            Statement stmt = conn.createStatement();
            rs = stmt.executeQuery("select count(*) as ant from userinfo");
            if(rs!=null){
                while(rs.next()){
                    System.out.println(rs.getInt("ant"));
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}
Java配置

 

eclipse使用properties连接hsqldb数据库

技术分享
package com.proxool;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

//使用proxool透明模式连接数据库
public class proxoolconfig {

    public static void main(String[] args) {
        Connection conn = null;
        ResultSet rs = null;
        try {
            Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
            //proxool.example 是别名
            //org.hsqldb.jdbc.JDBCDriver 是数据库的名称
            //jdbc:hsqldb:hsql://localhost/ 是url地址
            conn = DriverManager.getConnection("proxool.example:org.hsqldb.jdbc.JDBCDriver:jdbc:hsqldb:hsql://localhost/");
            Statement stmt = conn.createStatement();
            rs = stmt.executeQuery("select count(*) as ant from userinfo");
            if(rs!=null){
                while(rs.next()){
                    System.out.println(rs.getInt("ant"));
                }
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
使用Properties连接hsqldb

 

eclipse连接hsqldb数据库,使用properties文件配置

技术分享
package com.proxool;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.configuration.PropertyConfigurator;

//使用Properties配置文件信息
public class Properties_Proxool {

    public static void main(String[] args) {
        Connection conn = null;
        ResultSet rs = null;
        Properties info = new Properties();
            try {
                //Properties_Proxool.class.getResourceAsStream是读取Src下的文件信息
                info.load(Properties_Proxool.class.getResourceAsStream("/proxool.properties"));
                //读取使用Java的特性文件编写的配置文件。
                PropertyConfigurator.configure(info);
            } catch (IOException e) {
                e.printStackTrace();
            }catch (ProxoolException e) {
                e.printStackTrace();
            }
        try {
            //加载驱动包
            Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
            conn = DriverManager.getConnection("proxool.property-test");
            Statement stmt = conn.createStatement();
            rs = stmt.executeQuery("select count(*) as ant from userinfo");
            if(rs!=null){
                while(rs.next()){
                    System.out.println(rs.getInt("ant"));
                }
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }    
    }
}
Properties文件配置系统信息

记住使用properties配置,必须新建properties文件,同时放在准确的地方,这里是放在Src下,同时代码也是通过Src去找这个文件

技术分享
jdbc-0.proxool.alias=property-test
jdbc-0.proxool.driver-url=jdbc:hsqldb:hsql://localhost/
jdbc-0.proxool.driver-class=org.hsqldb.jdbc.JDBCDriver
jdbc-0.user=sa
jdbc-0.password=
jdbc-0.proxool.maximum-connection-count=10
jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE
Properties配置

 

eclipse连接hsqldb数据库,使用XML文件配置

技术分享
package com.proxool;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;
import org.logicalcobwebs.proxool.configuration.PropertyConfigurator;

//使用新建xml编写配置
public class XmlProxool {

    public static void main(String[] args) {
        Connection conn = null;
        ResultSet rs = null;
        Statement stmt;
            try {
                Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
                try {
                    //InputStreamReader 实例一个读取流
                    //XmlProxool.class.getResourceAsStream 读取的是src下的文件
                    //使用XML配置,解析的时候就是用 JAXPConfigurator.configure()解析
                    //使用Properties配置,解析的时候用 PropertyConfigurator.configure()
                    JAXPConfigurator.configure(new InputStreamReader(XmlProxool.class.getResourceAsStream("/proxool.xml")),false);
                    try {
                        conn = DriverManager.getConnection("proxool.xml-test");
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                } catch (ProxoolException e) {
                    
                    e.printStackTrace();
                }
                try {
                    stmt = conn.createStatement();
                    System.out.println(stmt);
                    rs = stmt.executeQuery("select count(*) as ant from userinfo");
                    if(rs!=null){
                        while(rs.next()){
                            System.out.println(rs.getInt("ant"));
                        }
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } catch (ClassNotFoundException e1) {
                e1.printStackTrace();
            }
        }
    }
XML文件配置系统信息

同上,这里也是放在Src文件下,代码也是通过Src去找XML文件

技术分享
<proxool-config>
    <proxool>
        <alias>xml-test</alias>
        <driver-url>jdbc:hsqldb:hsql://localhost/</driver-url>
        <driver-class>org.hsqldb.jdbc.JDBCDriver</driver-class>
        <!-- <statistics>1m,15m,1d</statistics> -->
        <driver-properties>
          <property name="user" value="SA"/>
          <property name="password" value=""/>
        </driver-properties>
        <maximum-connection-count>10</maximum-connection-count>
        <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
    </proxool>
</proxool-config>
XML配置

 

使用Tomcat访问网页,将该数据库的信息加载出来(Tomcat 8.0)

1、新建Servlet,编写代码

技术分享
package com.proxool.servlet;


import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;
import org.logicalcobwebs.proxool.configuration.PropertyConfigurator;

import com.proxool.Properties_Proxool;
import com.proxool.XmlProxool;

@WebServlet("/helloproxool")
public class helloproxool extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public helloproxool() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Connection conn = null;
        ResultSet rs = null;
        Statement stmt;
            try {
                Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
                try {
                    try {
                        conn = DriverManager.getConnection("proxool.xml-test");
                    } catch (SQLException e) {
                        
                        e.printStackTrace();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                try {
                    stmt = conn.createStatement();
                    System.out.println(stmt);
                    rs = stmt.executeQuery("select count(*) as ant from userinfo");
                    if(rs!=null){
                        while(rs.next()){
                            System.out.println(rs.getInt("ant"));
                        }
                    }
                } catch (SQLException e) {
                    
                    e.printStackTrace();
                }
            } catch (ClassNotFoundException e1) {
                e1.printStackTrace();
            }
        }
    

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}
Servlet代码

 

2、通过配置Web.xml

技术分享
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>test_hsqldb</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  
  <servlet>
  <servlet-name>proxool</servlet-name>
  <!--这是proxool自带的Servlet类  -->
  <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>    
</servlet>

<servlet-mapping>
  <servlet-name>proxool</servlet-name>
  <!--通过访问admin,访问AdminServlet  -->
  <url-pattern>/admin</url-pattern>
</servlet-mapping>

<servlet>
  <servlet-name>ServletConfigurator</servlet-name>
  <!--解析xml信息  -->
  <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
  <init-param>
    <param-name>xmlFile</param-name>
    <param-value>WEB-INF/proxool.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
  
  <servlet>
      <servlet-name>A</servlet-name>
      <servlet-class>com.proxool.servlet.helloproxool</servlet-class>
  </servlet>
    <servlet-mapping>
        <servlet-name>A</servlet-name>
        <url-pattern>*.j12</url-pattern>
    </servlet-mapping>
</web-app>
Web.xml配置

 

3、访问:http://localhost:8080/test_hsqldb/admin.j12,他会先去启动hsqldb数据库

访问http://localhost:8080/test_hsqldb/admin,会出现以下这个,就是可以的!

技术分享

 

以上是关于proxool+hsqldb的主要内容,如果未能解决你的问题,请参考以下文章

数据库连接池proxool的两种使用方式

Proxool连接池配置

proxool配置连接池

java-proxool 异常

SSH中 整合spring和proxool 连接池

你好 ,proxool解决mysql8小时断线怎么配置