目录
- 1. jetty概述
- 2. spring-jetty启动配置
- 2.1 Server类
- 2.2 Connector
- 2.3 Handler
1. jetty概述
维基百科:Jetty是一个纯粹的基于Java的网页服务器和Java Servlet容器。
Jetty Server是一个Connector集合和一个Handler集合间的管道,Connector用于接收HTTP连接,Handler服务来自连接的请求并作出响应,Jetty Server使用来自一个线程池的线程来处理这些工作。
2. spring-jetty启动配置
jetty可以通过配置文件的方式启动,按照spring加载配置文件的方式即可:
ctx = new ClassPathXmlApplicationContext("classpath:spring-jetty.xml");
jetty.xml主要完成Server类中ThreadPool、连接器Connector、Handler等主要组件的配置。
2.1 Server类
<bean id="Server" class="org.eclipse.jetty.server.Server" init-method="start" destroy-method="stop">
Server类作为jetty的入口,其初始化方法是start,销毁方法是stop。如果以java代码形式也可以,如下:
public static void main(String[] args) throws Exception {
startJetty(PORT);
}
private static void startJetty(int port) throws Exception {
LOGGER.debug("Starting server at port {}", port);
Server server = new Server(port);
//配置, 略
...
addRuntimeShutdownHook(server);
//启动
server.start();
logger.info("Server started at port {}", port);
server.join();
}
//系统关闭销毁操作
private static void addRuntimeShutdownHook(final Server server) {
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
if (server.isStarted()) {
server.setStopAtShutdown(true);
try {
// 销毁
server.stop();
} catch (Exception e) {
System.out.println("Error while stopping jetty server: " + e.getMessage());
}
}
}));
}
2.2 Connector
Connector,它负责接受客户端的连接请求,基于NIO方式。
2.3 Handler
handler链,为Server所管理,请求的具体执行由链中的handler负责。
eaglediao