⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pooleddbserver.java

📁 在机器上开一个端口,代理客户端的数据库请求,用在资源有限的终端访问大型数据库上使用,使用jdbc连接orcle, 客户端使用标准的socket即可
💻 JAVA
字号:
package athere.tp; 

import java.io.*;
import java.net.*;
import java.util.Date;
/**
 *  服务器实现,用线程池管理的服务器程序
 */
public class PooledDBServer{

    private int maxConnections;		//最大线程数

    private int listenPort;			//侦听端口号

    public PooledDBServer(int port , int maxCon){
        this.listenPort = port;
        this.maxConnections = maxCon;
    }

    /**
     * 初始化线程池中的线程,创建完的每个线程处于待命的状态,处理客户端的请求
     */
    private void setupHandlers(){
        for(int i=0 ; i<maxConnections ; ++i){
        	//创建PooledConnectionHandle对象,该类实现了runnable接口
        	PooledConnectionHandle connectionHandle = new PooledConnectionHandle();
        	//启动线程
        	new Thread(connectionHandle,"handle"+i).start();
        }
    }

   	/**
   	 * 套接字开始侦听,开始接收请求
   	 */
    public void acceptConnection(){
        try{
        	System.out.println(new Date() + " Server Listened Port:" + listenPort);
            ServerSocket server = new ServerSocket(listenPort,5);
            Socket incomingSocket = null;
            while(true){
                incomingSocket  = server.accept();
                System.out.println(new Date() + " Accept a Socket:"+incomingSocket.toString());
                /* 处理连接请求:
                 * 将客户socket传给PooledConnectionHandle的静态方法processRequest
                 * processRequest将socket放入请求队列
                 */
                PooledConnectionHandle.processRequest(incomingSocket);
            }
        }catch(BindException e){
            System.out.println(new Date() + " Unable to bind to port.");
            e.printStackTrace();
        }catch(IOException e){
            System.out.println(new Date());
            e.printStackTrace();
        }
    }

    //test start
    //将server 在cmd 命令行中启动即可调试
    public static void main(String[] args){
    	PooledDBServer tmp = new PooledDBServer(8059,20);
    	tmp.setupHandlers();
    	tmp.acceptConnection();
    }
    //test end
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -