自己动手写Web容器之TomJetty(二) 开启服务器

上一节我们对于实现TomJetty服务器做了一些与Web有关的知识铺垫和回顾。那么从本节正式开始实现TomJetty服务器的“山寨”之旅。要想实现一个服务器,第一步要把服务器建立起来,并且能够正常运行,才能等待来自客户端的请求。考虑到这一点,我们本节就来处理TomJetty服务器的创建和启动工作。

一、服务器建立

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

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

tomjetty.port=9527
tomjetty.requestheader.class=cn.lynn.tomjetty.RequestHeaderParserImpl

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

package cn.lynn.tomjetty;
import java.io.IOException;
import java.io.FileInputStream;
import java.util.Properties;  

public class TomJettyUtil {  

    private static Properties props = new Properties();  

    static {
        try {
            props.load(new FileInputStream(".//tomjetty.config"));
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(0);
        }
    }  

    public static String getValue(String key) {
        return props.getProperty(key);
    }
}

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

public class TomJetty extends Thread {
    private static ServerSocket server;
    private Socket socket;  

    public TomJetty(Socket socket) {
        this.socket = socket;
    }  

    ...
}

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

public static void openServer() throws Exception {
        server = new ServerSocket(Integer.parseInt(TomJettyUtil.getValue("tomjetty.port")));
        while (true) {
            new TomJetty(server.accept()).start();
        }
    }  

public static void closeServer() throws Exception {
    if (server != null) {
        if (!server.isClosed()) {
            server.close();
        }
    }
}

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索服务器
, socket
, server
, static
, public
一个
jetty服务器、jetty服务器下载、jetty服务器配置、清理jetty服务器缓存、jetty服务器搭建,以便于您获取更多的相关知识。

时间: 2024-08-22 14:20:02

自己动手写Web容器之TomJetty(二) 开启服务器的相关文章

自己动手写Web容器之TomJetty(五) 包装请求参数

前面我们实现了TomJetty响应无参请求静态页面的功能,但真实情况下,几乎所有请求都得携带参数.不能处理用户参数请求的Web服务器就好比温室里的花朵,始终上不了台面.所以本节我们将为TomJetty加入响应用户参数的功能.此外,前面我们使用的提交请求的方式都是GET方式,但在实际情况下,POST方式使用的更广泛,所以我们也将给TomJetty增加响应POST请求的能力. 一.扩展RequestHeader类 1.在RequestHeader类中新增parameter属性,用于标示请求头中客户请

自己动手写Web容器之TomJetty(四) 静态页面起步

上一节我们实现了将HTTP请求头的内容解析后打印到控制台上,让HTTP请求头的各个组成部分完全暴露在在我们面前.这个功能在IE浏览器的一款叫作HttpWatch的插件中有类似的体现,相信很多读者都用过它,利用HttpWatch查看网页请求和响应的日志信息功能来调试程序.前面讲到我们把HTTP请求头封装在RequestHeader类中,这个类有一个url属性,本节我们将利用它来定位服务器端的静态页面. 一.服务端静态页面 作为一个Web服务器,响应客户端发送的请求是首要任务,怎样设计它才能快速地响

自己动手写Web容器之TomJetty(一) 服务内功经脉

Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接.Tomcat 是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选. Jetty和To

自己动手写Web容器之TomJetty(六) 动态页面引入

在上一节,我们已经完成了TomJetty服务器处理静态页面请求的功能.但是只能处理静态页面请求的服务器并不能满足我们的要求,所以本节我们将为TomJetty服务器完成动态页面请求的处理工作. 所谓动态页面请求,无非就是客户端发送一个请求的url地址或者将一些请求参数提交给某一个url地址,服务器端首先接收到这个url地址并检索其在服务端程序中对应的某个处理类(Servlet),然后在该处理类中执行业务逻辑后产生结果,最终转发给相应的页面在客户端浏览器中显示结果. 一.动态页面请求处理 对于Jav

自己动手写Web容器之TomJetty(三) 掀起请求盖头来

前面我们对于实现TomJetty做了一些知识铺垫和复习,息知了HTTP请求的头部的组成元素.目前的TomJetty服务器已经能够成功启动,可是请求一旦过来却又看不懂^_^.所以本文就来解析HTTP请求头,剖析它的各部分.让TomJetty服务器能够明白它的意图. 一.HTTP请求头解析 1.编写一个RequestHeader类,用户封装请求头对象. package cn.lynn.tomjetty; import java.util.HashMap; /** * 封装请求头 * @author

《自己动手写Docker》书摘之二: Linux Cgroups

Linux Cgroups介绍 上面是构建Linux容器的namespace技术,它帮进程隔离出自己单独的空间,但Docker又是怎么限制每个空间的大小,保证他们不会互相争抢呢?那么就要用到Linux的Cgroups技术. 概念 Linux Cgroups(Control Groups) 提供了对一组进程及将来的子进程的资源的限制,控制和统计的能力,这些资源包括CPU,内存,存储,网络等.通过Cgroups,可以方便的限制某个进程的资源占用,并且可以实时的监控进程的监控和统计信息.  Cgrou

自己动手写ASP.NET ORM框架(二):AdoHelper支持多数据库操作的封装(2)

在上一篇文章中已经分析了AdoHelper的部分代码,接下来将继续分析剩余的部分代码,这里分析ExecuteNonQuery方法的实现,代码块1-1: // <summary>//通过提供的参数,执行无结果集的数据库操作命令// 并返回执行数据库操作所影响的行数.// </summary>// <param name="connectionString">数据库连接字符串</param>// <param name="co

海康威视频监控设备Web查看系统(二) 服务器篇

前言: 上一篇文章<海康威视频监控设备Web查看系统(一):概要篇>笼统的介绍了关于海康视频中转方案的思路,本文将一步步实现方案中的视频中转服务端.文中会涉及到一些.net socket处理和基础的多线程操作.我用的是SDK版本是SDK_Win32_V4.2.8.1 .大家根据自己实际情况想在相应的SDK,页面的说明里有详细的设备型号列表. 分析官方SDK的Demo: 首先来看看官方SDK中的C#版本的Demo,官方Demo分为两个版本,分别是"实时预览示例代码一"和&qu

《自己动手写Docker》书摘之五: 增加容器资源限制

增加容器资源限制 上一节中,我们已经可以通过命令行mydocker run -ti的方式创建并启动容器,这一节我们将通过Cgroup对容器的资源进行控制. 这一节中我们将实现通过mydocker run -ti -m 100m -cpuset 1 -cpushare 512 /bin/sh的方式控制容器容器的内存和CPU配置. 定义Cgroups的数据结构 上一章中我们介绍了Cgroups包含的三个概念:  cgroup hierarchy中的节点,用于管理进程和subsystem的控制的关系.