要配置QuickServer首先要写配置文件,然后告诉QuickServer加载这个配置。下面是一个非常简单的配置文件
<quickserver>
<name>EchoServer v 1.0</name>
<client-command-handler>
echoserver.EchoCommandHandler
</client-command-handler>
</quickserver>
现在有两种方式启动服务器
- 使用QuickServer启动参数--load
在这里你要做的是在启动QuickServer时使用"-load"指定xml配置文件的路径。例如
java -jar QuickServer.jar -load myxmlconfig.xml
或
java org.quickserver.net.server.QuickServer -load myxmlconfig.xml
或
quickserver.bat -load myxmlconfig.xml - 使用QuickServer的initService()方法
有时你可能需要在启动你的应用时使用自己的jar文件或类文件,或者你可能想要在启动前添加一些代码,那么这个选择是最合适的。下面的代码通过xml配置文件初始化了QuickServer。
QuickServer myServer = new QuickServer();
//pick the xml file form config folder
String confFile = "conf" + File.separator + "MyServer.xml";
Object config[] = new Object[] {confFile};
if(myServer.initService(config) != true) {
System.err.println("Could't init server !!");
}
现在我们来给我们的EchoServer写配置文件。下面是XML文件
01 <quickserver> 02 <name>EchoServer v 1.0</name> 03 <port>4123</port> 04 <bind-address>127.0.0.1</bind-address> 05 06 <client-command-handler> 07 echoserver.EchoCommandHandler 08 </client-command-handler> 09 <authenticator> 10 echoserver.EchoServerQuickAuthenticator 11 </authenticator> 12 <client-data> 13 echoserver.EchoServerPoolableData 14 </client-data> 15 16 <console-logging-level>INFO</console-logging-level> 17 18 <!-- some extra config. added just to show --> 19 <timeout>4</timeout> 20 <timeout-msg>-ERR Timeout</timeout-msg> 21 <max-auth-try>5</max-auth-try> 22 <max-auth-try-msg>-ERR Max Auth Try Reached</max-auth-try-msg> 23 <max-connection>-1</max-connection> 24 <max-connection-msg> 25 Server Busy/nMax Connection Reached 26 </max-connection-msg> 27 <object-pool> 28 <max-active>-1</max-active> 29 <max-idle>15</max-idle> 30 </object-pool> 31 <!-- some extra config. added just to show --> 32 33 <qsadmin-server> 34 <name>EchoAdmin v 1.0</name> 35 <port>4124</port> 36 <bind-address>127.0.0.1</bind-address> 37 <command-plugin> 38 echoserver.QSAdminCommandPlugin 39 </command-plugin> 40 </qsadmin-server> 41 |
下面是修改过的EchoServer.java文件,它现在可以从xml文件加载配置
01 package echoserver; 02 03 import org.quickserver.net.*; 04 import org.quickserver.net.server.*; 05 06 import java.io.*; 07 import java.util.logging.*; 08 09 public class EchoServer { 10 public static void main(String s[]) { 11 12 QuickServer myServer = new QuickServer(); 13 14 //setup logger to log to file 15 Logger logger = null; 16 FileHandler xmlLog = null; 17 FileHandler txtLog = null; 18 File log = new File("./log/"); 19 if(!log.canRead()) 20 log.mkdir(); 21 try { 22 logger = Logger.getLogger("org.quickserver.net"); //get qs logger 23 logger.setLevel(Level.FINEST); 24 xmlLog = new FileHandler("log/EchoServer.xml"); 25 logger.addHandler(xmlLog); 26 27 logger = Logger.getLogger("echoserver"); //get app logger 28 logger.setLevel(Level.FINEST); 29 txtLog = new FileHandler("log/EchoServer.txt"); 30 txtLog.setFormatter(new SimpleFormatter()); 31 logger.addHandler(txtLog); 32 //img : Sets logger to be used for app. 33 myServer.setAppLogger(logger); 34 } catch(IOException e){ 35 System.err.println("Could not create xmlLog FileHandler : "+e); 36 } 37 38 //store data needed to be changed by QSAdminServer 39 Object[] store = new Object[]{"12.00"}; 40 myServer.setStoreObjects(store); 41 42 //load QuickServer from xml 43 String confFile = "config"+File.separator+"EchoServer.xml"; 44 Object config[] = new Object[] {confFile}; 45 if(myServer.initService(config) == true) { 46 try { 47 myServer.startQSAdminServer(); 48 myServer.startServer(); 49 } catch(AppException e){ 50 System.out.println("Error in server : "+e); 51 } catch(Exception e){ 52 System.out.println("Error : "+e); 53 } 54 } 55 } 56 } 57 |