亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? quickserver.java

?? 一個用java編寫的服務(wù)器,對于學(xué)習(xí)網(wǎng)絡(luò)編程的人來說是個很好的例子
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
		serviceError = null;
		if(getServiceState() == Service.RUNNING)
			return false;
		try	{
			startServer();
		} catch(AppException e) {
			serviceError = e;
			return false;
		}
		return true;
	}

	/**
	 * Stop the service.
	 * @return true if serivce was stopped from Running state.
	 * @since 1.2
	 */
	public boolean stopService() {
		serviceError = null;
		if(getServiceState() == Service.STOPPED)
			return false;
		try	{
			stopServer();
			clearAllPools();
		} catch(AppException e) {
			serviceError = e;
			return false;
		} catch(Exception e) {
			serviceError = e;
			return false;
		}
		return true;
	}

	/**
	 * Suspends the service.
	 * @return true if service was suspended from resumed state.
	 * @since 1.2
	 */
	public boolean suspendService() {
		serviceError = null;
		if(getServiceState() == Service.RUNNING) {
			suspendMaxConnection = maxConnection;
			suspendMaxConnectionMsg = maxConnectionMsg;
			maxConnection = 0;
			maxConnectionMsg = "Service is suspended.";
			setServiceState(Service.SUSPENDED);
			logger.info("Service "+getName()+" is suspended.");
			return true;
		}
		return false;
	}
	/**
	 * Resume the service.
	 * @return true if service was resumed from suspended state.
	 * @since 1.2
	 */ 
	public boolean resumeService() {
		serviceError = null;
		if(getServiceState() == Service.SUSPENDED) {
			maxConnection = suspendMaxConnection;
			maxConnectionMsg = suspendMaxConnectionMsg;
			setServiceState(Service.RUNNING);
			logger.info("Service "+getName()+" resumed.");
			return true;
		}
		return false;
	}
	/** 
	 * Information about the service.
	 * @since 1.2
	 */
	public String info() {
		serviceError = null;
		StringBuffer buf = new StringBuffer();
		buf.append(getName()+"\n");
		buf.append(getBindAddr().getHostAddress()+" "+getPort()+"\n");
		return buf.toString();
	}
	// *** End of Service interface methods

	/**
	 * Initialise and create the server.
	 * @param param of the xml configuration file.
	 * @exception AppException if QuickServerConfig creation failed from the xml config file.
	 * @since 1.4.7
	 */
	public synchronized void initServer(Object param[]) throws AppException {
		QuickServerConfig qsConfig = null;
		try {
			qsConfig = ConfigReader.read( (String)param[0]);
		} catch(Exception e) {
			logger.severe("Could not init server from xml file "+
				(new File((String)param[0]).getAbsolutePath())+" : " +e);
			throw new AppException("Could not init server from xml file",e);
		}
		initServer(qsConfig);
	}

	/**
	 * Initialise and create the service.
	 * @param qsConfig QuickServerConfig object.
	 * @since 1.4.7
	 */
	public synchronized void initServer(QuickServerConfig qsConfig) throws AppException {
		setConfig(qsConfig);
		try {
			configQuickServer();

			loadApplicationClasses();

			//start InitServerHooks
			InitServerHooks ish = getConfig().getInitServerHooks();
			if(ish!=null) {
				Iterator iterator = ish.iterator();
				String initServerHookClassName = null;
				Class initServerHookClass = null;
				InitServerHook initServerHook = null;
				while(iterator.hasNext()) {
					initServerHookClassName = (String)iterator.next();
					initServerHookClass = getClass(initServerHookClassName, true);
					initServerHook = (InitServerHook) initServerHookClass.newInstance();

					logger.info("Loaded init server hook: " + initServerHookClassName);
					logger.fine("Init server hook info: " + initServerHook.info());
					initServerHook.handleInit(QuickServer.this);
				}
			}
		} catch(Exception e) {
			logger.severe("Could not load init server hook: " +e);
			logger.warning("StackTrace:\n"+MyString.getStackTrace(e));
			throw new AppException("Could not load init server hook",e);
		}
		setServiceState(Service.INIT);
		logger.finest("\r\n"+MyString.getSystemInfo(getVersion()));
	}

	/** 
	 * Returns the state of the process 
	 * As any constant of {@link Service} interface.
	 * @since 1.2
	 */
	public int getServiceState() {
		return serviceState;
	}
	/** 
	 * Sets the state of the process 
	 * As any constant of {@link Service} interface.
	 * @since 1.2
	 */
	public void setServiceState(int state) {
		serviceState = state;
	}

	private void configConsoleLoggingLevel(QuickServer qs, String temp) {
		if(temp.equals("SEVERE"))
			qs.setConsoleLoggingLevel(Level.SEVERE);
		else if(temp.equals("WARNING"))
			qs.setConsoleLoggingLevel(Level.WARNING);
		else if(temp.equals("INFO"))
			qs.setConsoleLoggingLevel(Level.INFO);
		else if(temp.equals("CONFIG"))
			qs.setConsoleLoggingLevel(Level.CONFIG);
		else if(temp.equals("FINE"))
			qs.setConsoleLoggingLevel(Level.FINE);
		else if(temp.equals("FINER"))
			qs.setConsoleLoggingLevel(Level.FINER);
		else if(temp.equals("FINEST"))
			qs.setConsoleLoggingLevel(Level.FINEST);
		else 
			logger.warning("unknown level "+temp);
	}
	
	/**
	 * Configures QuickServer based on the passed QuickServerConfig object.
	 * @since 1.2
	 */
	public void configQuickServer(QuickServerConfig config) throws Exception {
		QuickServer qs = QuickServer.this;
		qs.setConfig(config); //v1.3
		qs.setBasicConfig(config);
		String temp = config.getConsoleLoggingLevel();
		configConsoleLoggingLevel(qs, temp);
		temp = null;
		
		qs.setConsoleLoggingFormatter(config.getConsoleLoggingFormatter());

		qs.setName(config.getName());
		qs.setPort(config.getPort());
		qs.setClientEventHandler(config.getClientEventHandler());
		qs.setClientCommandHandler(config.getClientCommandHandler());
		if(config.getAuthenticator()!=null)
			qs.setAuthenticator(config.getAuthenticator()); //v1.3
		else if(config.getClientAuthenticationHandler()!=null)
			qs.setClientAuthenticationHandler(config.getClientAuthenticationHandler()); //v1.4.6
		qs.setClientObjectHandler(config.getClientObjectHandler());
		qs.setClientBinaryHandler(config.getClientBinaryHandler());//v1.4
		qs.setClientWriteHandler(config.getClientWriteHandler());//v1.4.5
		qs.setClientData(config.getClientData());
		qs.setClientExtendedEventHandler(config.getClientExtendedEventHandler());
		qs.setDefaultDataMode(config.getDefaultDataMode());//v1.4.6
		qs.setServerBanner(config.getServerBanner());
		qs.setTimeout(config.getTimeout());
		qs.setMaxAuthTry(config.getMaxAuthTry());
		qs.setMaxAuthTryMsg(config.getMaxAuthTryMsg());
		qs.setTimeoutMsg(config.getTimeoutMsg());
		qs.setMaxConnection(config.getMaxConnection());
		qs.setMaxConnectionMsg(config.getMaxConnectionMsg());
		qs.setBindAddr(config.getBindAddr());
		//v1.3.2
		qs.setCommunicationLogging(config.getCommunicationLogging());
		//v1.3.3
		qs.setSecurityManagerClass(config.getSecurityManagerClass());
		qs.setAccessConstraintConfig(config.getAccessConstraintConfig());
		temp = config.getApplicationJarPath();
		if(temp!=null) {
			File ajp = new File(temp);
			if(ajp.isAbsolute()==false) {
				temp = config.getConfigFile();
				ajp = new File(temp);
				temp = ajp.getParent() + File.separatorChar + 
					config.getApplicationJarPath();
				config.setApplicationJarPath(temp);
				temp = null;
			}
			qs.setApplicationJarPath(config.getApplicationJarPath());
			//set path also to QSAdmin
			if(config.getQSAdminServerConfig() != null ) {
				getQSAdminServer().getServer().setApplicationJarPath(
					config.getApplicationJarPath());
			}
		}
		qs.setServerHooks(config.getServerHooks());
		qs.setSecure(config.getSecure());
	}

	/**
	 * Configures QSAdminServer based on the passed QuickServerConfig object.
	 * @since 1.2
	 */
	public void configQuickServer(QSAdminServerConfig config) 
			throws Exception {
		QuickServer qs = getQSAdminServer().getServer();
		qs.setBasicConfig(config);
		
		//set the Logging Level to same as main QS
		String temp = getConsoleLoggingLevel();//config.getConsoleLoggingLevel();
		configConsoleLoggingLevel(qs, temp);
		
		//set the Logging Formatter to same as main QS
		//qs.setConsoleLoggingFormatter(config.getConsoleLoggingFormatter());
		qs.setConsoleLoggingFormatter(getConsoleLoggingFormatter());
		
		qs.setClientEventHandler(config.getClientEventHandler());//v1.4.6
		qs.setClientCommandHandler(config.getClientCommandHandler());
		qs.setName(config.getName());
		qs.setPort(config.getPort());
		if(config.getAuthenticator()!=null)
			qs.setAuthenticator(config.getAuthenticator()); //v1.3
		else  if(config.getClientAuthenticationHandler()!=null)
			qs.setClientAuthenticationHandler(config.getClientAuthenticationHandler()); //v1.4.6
		qs.setClientObjectHandler(config.getClientObjectHandler());
		qs.setClientBinaryHandler(config.getClientBinaryHandler());//v1.4
		qs.setClientWriteHandler(config.getClientWriteHandler());//v1.4.5
		qs.setClientData(config.getClientData());
		qs.setClientExtendedEventHandler(config.getClientExtendedEventHandler());//v1.4.6
		qs.setDefaultDataMode(config.getDefaultDataMode());//v1.4.6
		qs.setServerBanner(config.getServerBanner());
		qs.setTimeout(config.getTimeout());
		qs.setMaxAuthTry(config.getMaxAuthTry());
		qs.setMaxAuthTryMsg(config.getMaxAuthTryMsg());
		qs.setTimeoutMsg(config.getTimeoutMsg());
		qs.setMaxConnection(config.getMaxConnection());
		qs.setMaxConnectionMsg(config.getMaxConnectionMsg());
		qs.setBindAddr(config.getBindAddr());
		//v1.3.2
		qs.setCommunicationLogging(config.getCommunicationLogging());
		getQSAdminServer().setCommandPlugin(config.getCommandPlugin());
		//v1.3.2
		if(config.getCommandShellEnable().equals("true"))
			getQSAdminServer().setShellEnable(true);
		getQSAdminServer().setPromptName(config.getCommandShellPromptName());
		//v1.3.3
		qs.setAccessConstraintConfig(config.getAccessConstraintConfig());
		qs.setServerHooks(config.getServerHooks());
		qs.setSecure(config.getSecure());
	}

	/**
	 * Configures QSAdminServer and QuickServer based on the 
	 * internal QuickServerConfig object.
	 * @since 1.3
	 */
	public void configQuickServer() throws Exception {
		configQuickServer(getConfig());
		if(getConfig().getQSAdminServerConfig() != null ) {
			configQuickServer(getConfig().getQSAdminServerConfig());
		}
	}

	/**
	 * Usage: QuickServer [-options]<br/>
	 * Where options include:<br/>
	 *   -about		Opens About Dialogbox<br/>
	 *   -load <xml_config_file> [options]	Loads the server from xml file.
	 * where options include:
	 *    -fullXML2File <new_file_name>
	 */
	public static void main(String args[]) {
		try {
			if(args.length >= 1) {
				if(args[0].equals("-about")) {
					org.quickserver.net.server.gui.About.main(null);
				} else if(args[0].equals("-load") && args.length>=2) {
					QuickServer qs = QuickServer.load(args[1]);
					if(qs!=null) handleOptions(args, qs);
				} else {
					System.out.println(printUsage());
				}
			} else {
				System.out.println(printUsage());
				org.quickserver.net.server.gui.About.showAbout();
			}
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Loads the server from the xml file name passed.
	 * @since 1.4.7
	 */
	public static QuickServer load(String xml) throws AppException {
		QuickServer qs = new QuickServer();
		Object config[] = new Object[] {xml};
		qs.initServer(config);
		qs.startServer();
		if(qs.getConfig().getQSAdminServerConfig()!= null) {
			qs.startQSAdminServer();
		}
		return qs;
	}
	
	/** Prints usage */
	private static String printUsage() {
		StringBuffer sb = new StringBuffer();
		sb.append("QuickServer - Java library/framework for creating robust multi-client TCP servers.\n");
		sb.append("Copyright (C) QuickServer.org\n\n");
		sb.append("Usage: QuickServer [-options]\n");
		sb.append("Where options include:\n");
		sb.append("  -about\t"+"Opens About Dialog box\n");
		sb.append("  -load <xml_config_file> [load-options]\t"+"Loads the server from xml file.\n");
		sb.append("  Where load-options include:\n");
		sb.append("     -fullXML2File <file_name>\t"+"Dumps the Full XML configuration of the QuickServer loaded.\n");
		return sb.toString();
	}

	private static void handleOptions(String args[], QuickServer quickserver) {
		if(args.length<3) return;

		if(args[2].equals("-fullXML2File") && args.length>=4) {
			File file = new File(args[3]);
			logger.info("Writing full xml configuration to file: "+file.getAbsolutePath());
			try {
				TextFile.write(file, quickserver.getConfig().toXML(null));	
			} catch(Exception e) {
				logger.warning("Error writing full xml configuration: "+e);
			}			
		}
	}

	/**
	 * Cleans all Object and Thread pools
	 * @since 1.3
	 */
	public void clearAllPools() throws Exception {
		try {
			if(pool!=null)
				getClientPool().clear();
			if(clientHandlerPool!=null)
				getClientHandlerPool().clear();
			if(getClientDataPool()!=null)
				getClientDataPool().clear();
			if(getDBPoolUtil()!=null)
				getDBPoolUtil().clean();
			if(byteBufferPool!=null)
				getByteBufferPool().clear();
		} catch(Exception e) {
			logger.warning("Error: "+e);
			throw e;
		}
	}

	/**
	 * Closes all Object and Thread pools
	 * @since 1.3
	 */
	public void closeAllPools() throws Exception {
		if(pool==null && clientHandlerPool==null && getClientDataPool()==null &&
				getDBPoolUtil()==null && byteBufferPool==null) {
			return;
		}
		logger.fine("Closing pools for "+getName());
		try {
			if(pool!=null && PoolHelper.isPoolOpen(getClientPool().getObjectPool())) {
				logger.finer("Closing ClientThread pool.");
				getClientPool().close();
			}
			if(clientHandlerPool!=null && PoolHelper.isPoolOpen(getClientHandlerPool())) {
				logger.finer("Closing ClientHandler pool.");
				getClientHandlerPool().close();
			}
			if(getClientDataPool()!=null && PoolHelper.isPoolOpen(getClientDataPool())) {
				logger.finer("Closing ClientData pool.");
				getClientDataPool().close();
			}
			if(getDBPoolUtil()!=null) {
				logger.finer("Closing DB pool.");
				getDBPoolUtil().clean();
			}
			if(byteBufferPool!=null && PoolHelper.isPoolOpen(getByteBufferPool())) {
				logger.finer("Closing ByteBuffer pool.");
				getByteBufferPool().close();
			}
			logger.fine("Closed pools for "+getName());
		} catch(Exception e) {
			logger.warning("Error closing pools for "+getName()+": "+e);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久免费| 欧美日韩免费一区二区三区视频| 欧美大片免费久久精品三p | 91看片淫黄大片一级在线观看| 国产日韩欧美不卡在线| 成人性生交大片免费| 国产精品沙发午睡系列990531| caoporen国产精品视频| 一区二区三区欧美久久| 欧美年轻男男videosbes| 日产精品久久久久久久性色 | 欧美精品一区二区精品网| 国产精品一色哟哟哟| 国产精品乱码一区二三区小蝌蚪| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲国产精品麻豆| 欧美剧在线免费观看网站| 久久黄色级2电影| 国产色一区二区| 在线亚洲+欧美+日本专区| 视频在线在亚洲| 久久综合丝袜日本网| 91一区在线观看| 日韩av电影一区| 国产精品久久久久一区| 欧美精品三级在线观看| 国产精一区二区三区| 亚洲尤物在线视频观看| 精品国产免费久久 | 日本道精品一区二区三区| 秋霞电影一区二区| 国产精品久久国产精麻豆99网站| 欧美色综合网站| 高清shemale亚洲人妖| 艳妇臀荡乳欲伦亚洲一区| 久久精品夜夜夜夜久久| 欧美日韩大陆一区二区| 懂色中文一区二区在线播放| 亚洲一线二线三线久久久| 久久久久99精品一区| 欧美日韩一区在线| 成人av在线看| 久久成人久久爱| 亚洲综合自拍偷拍| 国产精品久线观看视频| 日韩精品一区国产麻豆| 在线免费一区三区| 国产电影精品久久禁18| 男女性色大片免费观看一区二区 | 日韩电影免费在线| 1000部国产精品成人观看| 精品奇米国产一区二区三区| 欧美在线观看你懂的| 国产成人综合自拍| 麻豆精品国产91久久久久久| 午夜伊人狠狠久久| 亚洲免费观看高清完整版在线 | 国产福利一区二区| 日本va欧美va瓶| 亚洲观看高清完整版在线观看| 国产精品人成在线观看免费| 精品国产乱码久久久久久久| 91精品一区二区三区在线观看| 日本韩国欧美三级| 91在线无精精品入口| 不卡的电影网站| 国产福利一区在线| 国产一区二区三区免费播放| 蜜臂av日日欢夜夜爽一区| 日韩av电影天堂| 丝袜亚洲另类欧美| 日韩在线卡一卡二| 日韩专区欧美专区| 奇米综合一区二区三区精品视频| 午夜久久久久久电影| 午夜精品久久久久影视| 亚洲国产一区二区三区青草影视| 亚洲乱码一区二区三区在线观看| 国产精品美女久久久久久2018| 国产欧美精品一区aⅴ影院 | 亚洲大片一区二区三区| 亚洲国产综合人成综合网站| 一区二区三区**美女毛片| 亚洲精品ww久久久久久p站| 中文字幕视频一区二区三区久| 国产精品视频yy9299一区| 国产精品久久久久永久免费观看 | 精品国精品自拍自在线| 久久夜色精品一区| 国产精品青草综合久久久久99| 中文av一区特黄| 亚洲人成小说网站色在线| 亚洲一区二区三区四区在线| 亚洲国产成人av网| 免费成人av资源网| 国产精品亚洲а∨天堂免在线| 丁香婷婷综合五月| 欧美中文字幕一二三区视频| 制服丝袜亚洲色图| 久久久亚洲精品一区二区三区 | 亚洲成人av中文| 日本欧美一区二区三区乱码| 国产乱淫av一区二区三区| 成人美女在线观看| 在线精品视频一区二区三四| 91精品免费在线观看| 精品剧情在线观看| 亚洲欧美在线另类| 亚洲va欧美va天堂v国产综合| 九九热在线视频观看这里只有精品| 国产激情一区二区三区四区| 91久久久免费一区二区| 日韩女优电影在线观看| 国产精品婷婷午夜在线观看| 亚洲午夜视频在线| 国产高清精品久久久久| 欧美亚洲综合色| 久久久综合精品| 午夜精品福利一区二区蜜股av| 国产麻豆视频精品| 欧洲一区在线观看| 国产欧美日本一区视频| 天天色天天操综合| 丰满亚洲少妇av| 日韩视频一区二区在线观看| 国产精品久久久久9999吃药| 蜜臀av性久久久久蜜臀aⅴ| 成人av资源站| 精品国产99国产精品| 亚洲男同1069视频| 国产精品综合二区| 欧美美女一区二区| 亚洲欧洲成人精品av97| 狠狠色丁香九九婷婷综合五月| 在线视频你懂得一区| 欧美国产国产综合| 久久国内精品视频| 欧美久久一区二区| 亚洲免费观看在线视频| 国产成人亚洲综合色影视| 欧美丰满美乳xxx高潮www| 亚洲伦理在线精品| k8久久久一区二区三区 | 亚洲视频你懂的| 国产一区二区0| 91麻豆精品国产91久久久使用方法| 一区在线观看视频| 国产91对白在线观看九色| 精品日韩99亚洲| 日本视频在线一区| 欧美高清视频不卡网| 亚洲欧美日韩国产综合| 成人精品gif动图一区| 久久久久久99久久久精品网站| 秋霞电影网一区二区| 欧美精品在线一区二区三区| 一区二区三区四区亚洲| 色综合久久久久综合体桃花网| 国产精品视频一二三区| 风间由美中文字幕在线看视频国产欧美| 日韩欧美国产高清| 久久9热精品视频| 日韩精品影音先锋| 久久99精品久久久久久| 精品日产卡一卡二卡麻豆| 免费欧美在线视频| 欧美变态口味重另类| 久久精品999| 精品国产凹凸成av人导航| 国产永久精品大片wwwapp| 精品99久久久久久| 国产成人在线看| 中文字幕中文乱码欧美一区二区| 成人免费毛片aaaaa**| 国产精品狼人久久影院观看方式| jlzzjlzz国产精品久久| 亚洲精品成人a在线观看| 欧美日韩色综合| 日av在线不卡| 久久久久久久免费视频了| 国产成人自拍在线| 亚洲欧洲中文日韩久久av乱码| 在线观看欧美精品| 午夜欧美在线一二页| 精品粉嫩超白一线天av| 国产成人综合在线观看| 亚洲精品美腿丝袜| 欧美一区二区三区四区久久| 国产一区在线观看视频| 中文字幕欧美一| 91精品麻豆日日躁夜夜躁| 精品一区二区久久| 最好看的中文字幕久久| 欧美精品少妇一区二区三区| 狠狠色丁香久久婷婷综合丁香| 中文字幕亚洲电影| 日韩一级二级三级精品视频| 国产91富婆露脸刺激对白| 亚洲午夜精品网| 久久中文娱乐网|