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

📄 generalserver.java

📁 一个java的server模版程序
💻 JAVA
字号:
package com.ec.generalserver;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class GeneralServer
{
	private List connector_set = new ArrayList(); 
	
	private Acceptor acceptor;
	private int workers;
	
	private int  conn_timeout = -1;		//default no limit
	
	private AppFactory app_creator;
	
	private boolean is_init = false;
	
	public GeneralServer(String ip,int port,int workernum,AppFactory appftry)
	{
		acceptor = new Acceptor(ip,port);
		workers = workernum;
		app_creator = appftry;
	};
	
	public void setAllowIP(List allowip)	//default all
	{
		acceptor.setAllowIP(allowip);
	}
	
	public void setMaxConn(int maxconn)	//default no limit
	{
		acceptor.setMaxConn(maxconn);
	}
	
	public void setConnTimeout(int timeout)	//default no limit
	{
		conn_timeout = timeout;
	}
	
	public void init() throws ServerInitException
	{
		try
		{
			for(int i=0;i<workers;i++)
			{
				Connector cntor = new Connector(acceptor,app_creator);
				cntor.setConnTimeout(conn_timeout);
				cntor.init();
				connector_set.add(cntor);
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
			throw new ServerInitException("catch exception" + e.getLocalizedMessage());
		}
		
		is_init = true;
	}
	
	public void run()
	{
		if ( !is_init )
		{
			System.out.println("not init yet,plz call init() first");
			return;
		}
		
		Iterator it=connector_set.iterator();
		while(it.hasNext())
		{
			Connector cntor = (Connector)it.next();
			cntor.start();
		}	
		
		//检查connector线程,发现停止线程则拉起来
		while(true)
		{
			try
			{
				Thread.sleep(60*1000);
			
				for(int i=0;i<connector_set.size();i++)
				{
					Connector cntor = (Connector)connector_set.get(i);
					if ( !cntor.isAlive()  )
					{
						System.out.println("warning:1 Thread died, restart it!");
						Connector new_cntor = new Connector(acceptor,app_creator);
						new_cntor.setConnTimeout(conn_timeout);
						new_cntor.init();
						connector_set.add(new_cntor);
						new_cntor.start();
					}
				}
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		} // while
	} //run
}

class ServerInitException extends Exception
{
	private static final long serialVersionUID = 1L;

	ServerInitException(String error)
	{
		super(error);
	}
}



⌨️ 快捷键说明

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