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

    在前面的章节里我们扩展了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提供的例子。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值