“非主流”Web容器之TomJetty之让服务动起来

要想实现一个服务器,第一步要把服务器建立起来,并且能够正常运行,才能等待来自客户端的请求。考虑到这一点,我们本节就来处理TomJetty服务器的创建和启动工作。

一、服务器建立

1.新建一个名为TomJetty的Java工程。

2.在工程根目录下新建一个tomjetty.config文件,用于提供服务器配置参数。

[java] view plaincopyprint?

  1. tomjetty.port=8080
  2. tomjetty.requestheader.class=cn.lynn.tomjetty.RequestHeaderParserImpl

3.编写一个工具类TomJettyUtil,用于程序读取服务器配置参数值。

[java] view plaincopyprint?

  1. package cn.lynn.tomjetty;
  2. import java.io.IOException;
  3. import java.io.FileInputStream;
  4. import java.util.Properties;
  5. public class TomJettyUtil {
  6.     private static Properties props = new Properties();
  7.     static {
  8.         try {
  9.             props.load(new FileInputStream(“.//tomjetty.config”));
  10.         } catch (IOException e) {
  11.             e.printStackTrace();
  12.             System.exit(0);
  13.         }
  14.     }
  15.     public static String getValue(String key) {
  16.         return props.getProperty(key);
  17.     }
  18. }

4.编写一个TomJetty类继承于Thread类,用于封装服务器对象。

[java] view plaincopyprint?

  1. public class TomJetty extends Thread {
  2.     private static ServerSocket server;
  3.     private Socket socket;
  4.     public TomJetty(Socket socket) {
  5.         this.socket = socket;
  6.     }
  7.     …
  8. }

5.为TomJetty类提供openServer()和closeServer()方法,用于封装打开和关闭服务器的细节操作。

[java] view plaincopyprint?

  1. public static void openServer() throws Exception {
  2.         server = new ServerSocket(Integer.parseInt(TomJettyUtil.getValue(“tomjetty.port”)));
  3.         while (true) {
  4.             new TomJetty(server.accept()).start();
  5.         }
  6.     }
  7. public static void closeServer() throws Exception {
  8.     if (server != null) {
  9.         if (!server.isClosed()) {
  10.             server.close();
  11.         }
  12.     }
  13. }

到这里为止,TomJetty服务器已经建立完毕,并且提供了openServer()和closeServer()方法,供外部程序调用,以执行打开和关闭服务器的操作。

二、服务器启动

编写一个服务器启动类StartTomJetty。

[java] view plaincopyprint?

  1. package cn.lynn.tomjetty;
  2. public class StartTomJetty {
  3.     public static void main(String[] args) {
  4.         try {
  5.             TomJetty.openServer();
  6.         } catch (Exception e) {
  7.             try {
  8.                 TomJetty.closeServer();
  9.             } catch (Exception e1) {
  10.                 e1.printStackTrace();
  11.             }
  12.         }
  13.     }
  14. }

这样一来,TomJetty服务器就能正常启动了,控制台无任何异常出现出现^_^。当然,它什么也不会做。因为在run()方法中没有进行任何操作^_^。好了,现在服务器的创建和启动工作都已完成,可以等待来自客户端的请求。但是当真的有请求来到时,目前的TomJetty服务器会感到“束手无策”,不知道请求到底要做什么、需要什么东西。这还谈什么交互呢?因此在下一节里我们将掀开HTTP请求头的神秘面纱,让TomJetty服务能够认识它,明白它的意图!

标签