您的位置:首页 > 产品设计 > UI/UE

QuickServer开发指南(8)- XML配置

2005-02-28 17:05 369 查看
在前面的章节里我们扩展了EchoServer。我们已经在类中配置了QuickServer,在某些情况下这是可接受的。但是很多应用更希望用户能够在应用启动后动态配置应用。给QuickServer添加这方面功能,你可以告诉服务器读取XML文件并实例化它。
要配置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
42 </quickserver>
下面是修改过的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
想要知道更多的XML配置请参考QuickServer Java文档(主页有一个xml样本)以及QuickServer提供的例子。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: