`
cucaracha
  • 浏览: 141396 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:87893
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:36700
社区版块
存档分类
最新评论

[Java EE 7] Servlet 协议升级处理

阅读更多
HTTP 1.1 (RFC 2616)14.42 节定义了 HTTP 升级机制,允许你从 HTTP 1.1 过渡到其它兼容的协议。应用层的通信完全取决于升级后选择的协议。客户端和服务端完成协议升级后,后续请求都将使用新协议。典型的例子是如何将 HTTP 协议升级到 WebSocket,这在 RFC 6455Opening Handshake 中有介绍。

Servlet 容器提供了协议升级机制,但容器本身没有包含关于新协议的辅助类,新协议处理都封装到 HttpUpgradeHandler 接口中进行。Servlet 容器和 HttpUpgradeHandler 之间的数据读写是通过字节流。

下面的例子中,在 Servlet.service 方法中决定是否升级协议,并使用到了一个新的方法:HttpServletRequest.upgrade,还有两个新的接口:javax.servlet.http.HttpUpgradeHandler 和 javax.servlet.http.WebConnection:

if (request.getHeader("Upgrade").equals("echo")) {
    response.setStatus(HttpServletResponse.SC_SWITCHING_PROTOCOLS);
    response.setHeader("Connection", "Upgrade");
    response.setHeader("Upgrade", "echo");
    request.upgrade(MyProtocolHandler.class);
    System.out.println("Request upgraded to MyProtocolHandler");
}


请求中判断了 Upgrade 头信息,用于判断是否需要进行协议升级。如果 Upgrade 的值是 echo,那么将会设置正确的响应 status 和头信息。request.upgrade 方法将会传入 HttpUpgradeHandler 接口实现 Class 类。

当请求离开 service 方法之后,servlet 容器处理完了所有的 filter,然后标记当前请求需要由 HttpUpgradeHandler 的实例处理。

public class MyProtocolHandler implements HttpUpgradeHandler {
     @Override
     public void init(WebConnection wc) {
         //. . .
     }

    @Override
     public void destroy() {
         //. . .
     }
 }


上面的代码是 HttpUpgradeHandler 接口的一个实现样例。Servlet 将调用 HttpUpgradeHandler 的 init 方法,并传入 WebConnection 对象,使 HttpUpgradeHandler 能访问到数据,当升级过程完成后,HttpUpgradeHandler.destroy 方法将会被调用。

文章来源:http://www.aptusource.org/2014/04/java-ee-upgrade-processing/
0
0
分享到:
评论

相关推荐

    Java EE 7 tutorial 中的examples代码

    1. **Servlet 3.1**:Java EE 7中Servlet规范升级到3.1版,引入了异步处理能力,允许Servlet在不阻塞请求的情况下执行长时间运行的任务。同时,Servlet 3.1还支持WebSocket协议,为实时通信提供了可能。 2. **JSP ...

    Java EE 7.zip

    1. **Servlet 3.1**:Java EE 7升级了Servlet规范至3.1版,引入了异步客户端API,使得服务器可以处理更多的并发请求。此外,还支持WebSocket协议,允许双向通信,为实时应用提供了基础。 2. **JSP 2.3**:Java...

    java_ee_sdk-8u1-web.zip

    Java EE SDK 8u1-web.zip 是一个包含Java企业版(Java Enterprise Edition,简称Java EE)开发工具的压缩包,特别地,它包含了Java Development Kit(JDK)的一个版本。JDK是Java程序开发的核心组件,提供了编译、...

    Java ee试卷两份

    7. **Spring框架**:虽然Spring不属于Java EE标准,但因其强大的依赖注入和AOP(面向切面编程)特性,在企业级开发中广泛应用。试卷可能会考察Spring MVC、Spring Boot、Spring Data JPA等模块。 8. **MVC模式**:...

    Java EE, Jakarta EE and MicroProfile Developers

    7. **JAF (Java Activation Framework)**:允许Java应用程序处理未知的数据格式,如电子邮件附件。 8. **JAFR (Java API for RESTful Web Services)**:基于HTTP协议的RESTful服务开发,使得创建和消费Web服务变得...

    javaee5-doc-api

    在Java EE 5中,Servlet API升级到了2.5版本,增加了许多新功能。例如,`@WebServlet`注解允许程序员通过在类上添加注解而不是XML配置来声明Servlet。此外,Servlet 2.5支持过滤器链的定义和监听器的增强,使得应用...

    Java-EE-7 SDK api 文档(英文)

    Java EE 7是这个框架的一个重要版本,它引入了许多新特性和改进,以适应不断发展的Web技术和云计算需求。本SDK包含Java EE 7的API文档,为开发者提供了详细的技术参考。 在Java EE 7中,主要涵盖了以下核心知识点:...

    Sun(中国)认证Java EE开发员试卷

    7. 在Java EE架构中,Applets属于客户端组件,而不是Web层;Application Client、JSP、Servlet属于Web层,而EJB(Enterprise JavaBeans)则属于业务逻辑层,负责处理复杂的业务规则和数据操作。 8. MVC(Model-View...

    Java EE 6 API

    7. **Servlet 3.0**:Servlet规范的重大升级,添加了异步处理、过滤器链的改进、动态部署和注解配置等功能,大大简化了Web应用的开发。 8. **JAX-RS 1.1 (Java API for RESTful Web Services)**:定义了创建RESTful...

    Java+EE大学教程

    - **发展历程**: Java EE 自1998年发布以来,经过多次迭代升级,最新版本为Java EE 8。 - **主要组件**: 包括Servlets、JavaServer Pages (JSP)、Enterprise JavaBeans (EJB)、Java Persistence API (JPA)等。 ####...

    Java EE 8 web profile 规范 和full platform规范

    Java EE(Java Platform, Enterprise Edition)是Oracle公司主导的用于构建企业级Web应用程序的标准和框架。它提供了一系列的API和服务,使得开发人员可以更高效、更稳定地开发分布式、多层架构的应用。Java EE 8是...

    Java EE规范各个版本的比较V1.0.doc

    例如,从J2EE 1.3到Java EE 5.0,EJB从复杂的组件模型简化为更加轻量级,JSP和Servlet也得到了增强,Web服务规范升级,安全管理更加完善,且引入了诸如Expression Language这样的新特性,使得开发更高效。

    servlet-api 各种版本

    Servlet-API是Java Servlet技术的核心部分,它定义了服务器端与客户端之间交互的一系列接口...了解和掌握不同版本间的差异,有助于开发者根据项目需求选择最合适的Servlet版本,或者在升级过程中更好地处理兼容性问题。

    毕业论文-基于Java-EE的仓库管理系统设计.doc

    Java EE 平台包括了多种协议和API,例如Servlet、JavaServer Pages(JSP)、Enterprise JavaBeans(EJB)等。 二、仓库管理系统概述 仓库管理系统是一个综合性的信息系统,旨在帮助企业管理仓库业务和作业流程。它...

    [免费]Servlet3.1规范-使用7z压缩的文件

    Servlet 3.1规范是在Servlet 3.0的基础上进行的升级,引入了许多新特性,包括异步处理、注解驱动的配置、WebSocket支持等。接下来,我们将深入探讨这些关键知识点。 1. **异步处理**:Servlet 3.1引入了异步Servlet...

    Java_EE_Tutorial:Java EE 7的教程资料库

    1. **Servlet 3.1**: Java EE 7中的Servlet API升级到了3.1版本,提供了异步处理能力的增强,允许开发者编写非阻塞的HTTP服务。此外,还支持了WebSocket协议,使得服务器与客户端可以进行双向通信。 2. **JPA 2.1**...

    servlet-api.jar

    - 随着Java EE的演进,Servlet API也经历了多个版本的更新,如Servlet 2.x、3.x、4.x,每次升级都引入了新的特性和性能优化。 综上所述,servlet-api.jar对于理解Java Web开发至关重要,它构成了Web应用与服务器...

    servlet-api 源码

    随着Java EE的演进,Servlet API也不断升级。Servlet 3.0引入了注解配置,使得无需web.xml也能声明Servlet、Filter和Listener,简化了Web应用的配置。 总结,Servlet API是Java Web开发的基石,通过理解其源码,...

    tomcat 7到9 版本

    Tomcat 8是一个更进一步的版本,它升级到了Java EE 7规范,包括Servlet 3.1、JSP 2.3和EL 3.0。Tomcat 8引入了HTTP/2支持,提高了响应速度和减少了网络延迟。此外,它还增强了异步处理能力,提升了多线程处理性能。...

    javaee7-hol:Java EE 7动手实验

    3. **WebSocket API**:Java EE 7引入了WebSocket标准,提供了一种低延迟、双向通信的协议,使实时交互应用如聊天室、在线游戏等成为可能。 4. **JAX-RS 2.0**:Java API for RESTful Web Services的升级版,增加了...

Global site tag (gtag.js) - Google Analytics