辛星jetty嵌入式开发第三篇:监听多个端口

本系列教程已经上传至github,感兴趣的朋友们可以star一下,附上传送门: https://github.com/xinxing0913/jetty-embed-demo。

有时候我们出于各种需要,可能需要监听多个端口,那么这个时候该怎么实现呢?这里我们只需要创建两个连接器就可以了,也就是两个Connector,因为我们这里要设置监听的端口,因此我们这里可以使用ServerConnector。而且我们要记得把连接器添加给Server类的实例。

我们这里还是来看一个具体的例子吧,我们编写代码内容如下:

package com.mengzhidu.jetty.demo.x003;

import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;

/**
 * 在这个范例中,我们同时监听两个端口
 * 分别为8080 和 9090
 * 这里我们只需要创建两个连接器即可
 */
public class App {
    public static void main(String[] args) throws Exception {
        Server server = new Server();

        ServerConnector connector1 = new ServerConnector(server);
        connector1.setPort(8080);

        ServerConnector connector2 = new ServerConnector(server);
        connector2.setPort(9090);

        // 给服务器添加监听器
        server.setConnectors(new Connector[] { connector1, connector2});

        server.setHandler(new OutputHandler());
        server.start();
        server.join();
    }
}

然后我们编写我们的OutputHandler,它的作用很简单,就是输出一段简单的文本信息,我们代码内容如下所示:

package com.mengzhidu.jetty.demo.x003;

import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 负责输出的Handler
 */
public class OutputHandler extends AbstractHandler {

    @Override
    public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {

        // 设置字符集
        response.setContentType("text/html;charset=utf-8");
        // 输出文本信息
        response.getWriter().println("hello jetty! 我是辛星 (*^__^*)");
        // 这里要标记为已处理
        baseRequest.setHandled(true);
    }
}

这样我们就已经监听两个端口了,而且这两个端口运行的代码也是完全一样的,我们启动程序,然后我们来看一下执行效果吧:


辛星jetty嵌入式开发第三篇:监听多个端口_第1张图片
同时监听两个端口

当然同时监听更多的端口的代码也是类似的,这里就不赘述了。一般来说,我们监听多个端口在很多时候还是需要的,特别是在隔离内网和外网的场景下。

你可能感兴趣的:(辛星jetty嵌入式开发第三篇:监听多个端口)