Jetty的架构
Connector(连接器)集合负责接收HTTP连接。handler(处理器)集合负责处理连接请求并给予响应。而Jetty Server(服务器)则是前两者的管道连接器。负责创建并初始化connector、handler、ThreadPool组件,然后调用start方法启动他们。ThreadPool(线程池)为他们完成工作提供线程。
Jetty Server演示代码
//1:定义server
Server server = new Server();
//2:把连接器集合放到server里
Connector connector=new SelectChannelConnector();
connector.setPort(8080);
server.setConnectors(new Connector[]{connector});
//3:并把处理器集合放到server里
Handler param=new ParamHandler();
Handler hello=new HelloHandler();
HandlerCollection handlers = new HandlerCollection();
handlers.setHandlers(new Handler[]{param,hello});
server.setHandler(handlers);
//4:启动server
server.start();
server.join();
模式
jetty遵循一些比较规范的模式,最抽象的概念通过接口定义,如连接器,处理器和缓冲区。在抽象类中实现这些接口的通用操作,如AbstractConnector, AbstractHandler and AbstractBuffer。
Connectors
连接器表示协议的处理者,负责解析请求并生成响应。不同类型的连接器在其基于的协议下有效,如调度模型和IO API的使用:
•SocketConnector - for few busy connections or when NIO is not available.
•BlockingChannelConnector - for few busy connections when NIO is available
•SelectChannelConnector - for many mostly idle connections or asynchronous handling of Ajax requests.
•SslSocketConnector - 没有使用NIO的SSL连接器。
•SslSelectChannelConnector - 使用非阻塞NIO支持的SSL连接器。
•AJPConnector AJP protocol support for connections from apache mod_jk or mod_proxy_ajp
connectors的使用代码
Connector connector=new SelectChannelConnector();
connector.setPort(8080);
Handlers
Handler组件负责处理接收到的请求. handler核心的API是handle方法:
public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch)
throws IOException, ServletException;
这个方法的实现可以处理请求,传递请求到另外一个处理器(或者servlet),或修改并包装请求并传递出去。有三种类型的处理器:
- Coordinating Handlers - 负责路由请求到其他处理器的处理器(eg HandlerCollection, ContextHandlerCollection)
- Filtering Handlers - 负责增加请求并传递到其他处理器的处理器(eg. HandlerWrapper, ContextHandler, SessionHandler)
- Generating Handlers - 负责产生内容的处理器(eg ResourceHandler and ServletHandler)
Handler代码如下
Handler handler=new HelloHandler();
server.setHandler(handler);
public static class HelloHandler extends AbstractHandler
{
public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException
{
Request base_request = (request instanceof Request) ? (Request)request:HttpConnection.getCurrentConnection().getRequest();
base_request.setHandled(true);
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>Hello OneHandler</h1>");
}
}
Servlets
Context
Contexts是一种处理器,负责组织其他特定URI上下文路径或者一个虚拟机的处理器。通常情况下一个上下文必须有:
- 一个上下文路径,负责通过上下文定义哪一个请求被处理。 (eg /myapp )
- 一个基于静态内容的资源(a docroot)
- 一个类加载器去获得指定上下文中的类(通常在docroot/WEB-INF/classes下)
- 虚拟机名称
上下文实现包括:
- ContextHandler
- Servlet Context
- a Web Application Context
Context示意代码:
ContextHandler context = new ContextHandler();
context.setContextPath("/");
context.setResourceBase(".");
context.setClassLoader(Thread.currentThread().getContextClassLoader());
server.setHandler(context);
Web Applications
一个WebAppContext是servlet Context的子类,它提供web应用程序标准的层次结构,以及session, security, listeners, filter, servlets 和JSP的配置。
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar(jetty_home+"/webapps/test");
webapp.setDefaultsDescriptor(jetty_home+"/etc/webdefault.xml");
server.setHandler(webapp);
参考资料
- 大小: 43.4 KB
- 大小: 43.4 KB
- 大小: 4.4 KB
- 大小: 33 KB
- 大小: 19.6 KB
分享到:
相关推荐
将代码复制到myEclipse的两个Web Service项目中后,需要配置相应的服务器(如Tomcat或Jetty)进行部署。部署完成后,客户端可以通过URL访问服务端的Web Service接口,实现跨系统的数据交换和功能调用。 7. **安全...
SpringBoot的核心特性包括自动配置、嵌入式Web服务器(如Tomcat或Jetty)、健康检查、应用信息以及对Spring Boot Starter项目的支持。自动配置是SpringBoot的一大亮点,它会根据你在类路径中的依赖来自动配置你的...
- **服务器部署**:Tomcat、Jetty等轻量级应用服务器适用于部署Java Web应用。 ### 三、项目实施过程 #### 3.1 需求分析 需求分析阶段需要明确系统的目标用户、主要功能需求以及非功能性需求(如性能指标)。这一...
学籍管理系统可能采用了MVC架构,将业务模型、用户界面和控制逻辑分离,提高代码的可维护性和可扩展性。Model代表数据模型,View负责显示数据,Controller处理用户请求并调用Model和View。 5. **Web应用部署**: ...
开发过程中可能使用Eclipse、IntelliJ IDEA等集成开发环境,配合Tomcat或Jetty等应用服务器运行JSP应用。版本控制工具如Git用于团队协作,Maven或Gradle管理项目依赖。 六、论文与开题报告 论文详细阐述了系统的...
在应用服务器的集成方面,ActiveMQ与常见的Java应用服务器进行了良好集成,例如Apache Tomcat、Jetty、Apache Geronimo和JBoss。这些集成例子在文档的特定章节中有详细介绍,为开发者提供了便利。 为了提高扩展性和...
5. 服务器:可能部署在Tomcat或Jetty等应用服务器上,确保系统的稳定运行。 二、系统功能模块 1. 用户管理:包括用户注册、登录、权限分配等功能,管理员可对用户角色进行管理,如教师、学生、管理员等。 2. 考试...
在这个项目中,开发者使用了嵌入式Jetty服务器来搭建服务端架构。Jetty是一个轻量级、高性能的HTTP服务器和Servlet容器,它使得开发者可以快速地部署和管理Web应用程序,无需额外的复杂配置,非常适合小型项目或原型...
Tomcat或Jetty可能作为JAVA应用服务器,Nginx或Apache可作为反向代理和负载均衡器,而Docker和Kubernetes可能用于容器化部署和集群管理。 综上所述,"JAVA+SQL办公自动化系统"是一个综合性的IT项目,涵盖了软件开发...
开发过程中可能用到的工具有Eclipse、IntelliJ IDEA等IDE,以及Tomcat、Jetty等应用服务器。此外,开发者可能会使用MVC框架,如Struts、Spring MVC,以提高开发效率和代码可维护性。 八、测试与部署 完成开发后,...
**JavaServer Pages (JSP) 知识点详解** JavaServer Pages(JSP)是Java平台上的一种动态网页技术,由Sun ...对于JSP英文文献的翻译,可以帮助你深入理解其内部原理和技术细节,这对于进一步提升你的JSP技能大有裨益。
- 如果你熟悉Servlets,可以在Servlet容器(如Tomcat或Jetty)中运行这个应用。 - 创建一个Servlet Web工程,导入`HelloWorldResource`和`FirstStepsApplication`类。 - 将必要的库文件(如`org.restlet.jar`,`...
这个系统包含了完整的开发文档,包括源代码、论文、开题报告、外文翻译以及答辩PPT,为学习者提供了全面的参考材料。 一、JSP技术基础 JSP(JavaServer Pages)是Java平台上的动态网页技术,它将HTML代码和Java代码...
项目报告、开题报告和外文翻译都是项目文档的一部分,它们记录了项目的背景、目标、设计思路、实施过程以及结果分析,有助于理解和评估项目的完成情况。 总的来说,基于JSP的毕业生招聘信息的发布与管理项目涵盖了...
2. **MVC设计模式**:模型-视图-控制器(Model-View-Controller)是用于构建用户界面的常见架构模式。在这个考试系统中,模型负责数据处理,视图负责用户交互,控制器处理用户请求并协调模型和视图。 3. **数据库...
3. **MVC设计模式**:该系统可能采用了Model-View-Controller(模型-视图-控制器)架构,将业务逻辑、数据模型和用户界面分离,提高代码的可维护性和可扩展性。 4. **数据库管理**:电子投票系统需要存储投票信息、...
2. MVC设计模式:该系统可能采用了Model-View-Controller(模型-视图-控制器)架构,这是Web应用开发中常见的设计模式。Model负责数据处理,View负责展示,Controller处理用户请求并协调Model和View。通过MVC模式,...
- **服务器**: 如Tomcat、Jetty等,用于部署和运行Web应用。 #### 三、系统架构设计 - **前端展示层**: 负责用户界面的展示,包括登录注册页面、文章列表页、文章详情页等。 - **业务逻辑层**: 实现核心功能模块,...