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

翻译 2005年02月28日 17:05:00
    在前面的章节里我们扩展了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提供的例子。

相关文章推荐

QuickServer开发指南(1)- 介绍

    QuickServer是一个免费的开源Java库,用于快速创建健壮的多线程、多客户端TCP服务器应用程序。使用QuickServer,用户可以只集中处理应用程序的逻辑/协议,从而方便的建立功能...

QuickServer--在吵闹的环境里快速搭建自己的TcpServer(Pragmatic系列)

作者:江南白衣      虽然现在已是Web Server, Web Service的天下,但偶然还是会因为性能苛刻,或者需要自定义协议的原因,很无辜的要自己做一个Multi-Thread,Multi...
  • joliny
  • joliny
  • 2008年04月13日 21:09
  • 572

QuickServer自学笔记(一)

因为最近要写一个CS架构的程序,客户端用的Vb6.0,服务器端我用的QuickServer,因为QuickServer对我来说,是一个新的东西,所以我计划写博客写下我的学习路程。 对于QuikSe...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

QuickServer

QuickServer是个java开元框架,很方面很容易实现多线程、多客户端TCP服务应用。今天在QuickServer网站http://www.quickserver.org/下载文档Develop...
  • educast
  • educast
  • 2013年10月28日 22:25
  • 1771

QuickServer开发指南(6)- 远程管理支持

    我们的EchoServer可能需要修改几个服务器配置参数,如超时消息、最多验证数、最大验证时间。QuickServer支持这些功能而无须改变代码。1. 使用QSAdminServer    当...

JAVA中基于UDP实现多线程通信

服务器端程序,利用DatagramSocket负责监听端口,当客户端发过来消息时,服务器端就会响应,并将消息内容保存到Datagrampacket对象中,并且!每一次while循环必须重新创建Data...

QuickServer开发指南(1)- 介绍

    QuickServer是一个免费的开源Java库,用于快速创建健壮的多线程、多客户端TCP服务器应用程序。使用QuickServer,用户可以只集中处理应用程序的逻辑/协议,从而方便的建立功能...

Tomcat8.x 在上下文的web.xml配置跳转到jsp文件<jsp-file>

/hellojsp           /a/b/c/file.jsp // 标签的解析,转成标准化org.apache.catalina.core.StandardWrap...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QuickServer开发指南(8)- XML配置
举报原因:
原因补充:

(最多只允许输入30个字)