【问题标题】:What's the purpose of async-supported in web.xml?web.xml 中支持异步的目的是什么?
【发布时间】:2012-04-12 18:32:26
【问题描述】:
<servlet>
        <description>xxx</description>
        <servlet-name>xxx</servlet-name>
        <servlet-class>com.xxx.yyy</servlet-class>
        <async-supported>true</async-supported>
</servlet>

servlet 的 web.xml 配置文件中async-supported 的用途是什么?我可以在什么情况下使用它?

【问题讨论】:

标签: java servlets asynchronous web.xml


【解决方案1】:

具有讽刺意味的是,我一直在寻找如何在 tomcat 的 web.xml 中编写此属性的语法,这是我从 google 打开的第一个搜索项 - 它也写得正确(它有效),所以谢谢。

不过,为了回答您的问题,这允许 servlet 存储传入请求以供以后响应。它释放了用于处理请求的线程,以便它可以在其他地方使用,直到服务器准备好发送响应。

出于实际目的,使用此配置,您可以设置一个 servlet,它将(实际上)push 数据发送到客户端(在客户端向服务器发送初始请求之后)。

这种技术不需要来自客户端的不必要的定时请求,以获取可以在不确定的时间间隔内更改的数据。它通过不挂在线程上以可扩展的方式完成。


一些示例用例包括:

聊天应用程序,当一个客户端键入一条消息时,您希望它立即显示给另一个客户端。

电子邮件应用程序,允许客户端在电子邮件服务器收到电子邮件后立即查看。

我还使用它从编程逻辑控制器向浏览器发送输入更改更新以执行自动化任务。

Here's 一个很好的教程。 This 还涵盖了 java 中的一些螺母和螺栓。

【讨论】:

  • GlassFish 4.1 也是如此
  • 注意:如果有任何过滤器映射到您的异步请求,那么每个过滤器在其&lt;filter&gt; 部分也需要&lt;async-supported&gt;true&lt;/async-supported&gt;
【解决方案2】:

如果您碰巧使用的是 GlassFish 4.1,请在 src/main/webapp/web.xml 中尝试:

<servlet>
    <servlet-name>javax.ws.rs.core.Application</servlet-name>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>javax.ws.rs.core.Application</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

【讨论】:

    【解决方案3】:

    主要目的是启用 XHR 流作为 Websockets 的后备机制。如果未明确配置为 true,则您的应用程序无法回退到 XHR 流,这将导致 java.lang.IllegalArgumentException: Async support must be enabled on a servlet....

    如需更深入的信息,请查看此处(Servlet 3 异步请求):
    http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html

    为了验证您的配置是否正确应用,请将浏览器中的 wesocket 连接数限制为 1,并在多个选项卡中打开您的应用程序。如果应用了配置,您将在选项卡 1 中建立 websocket 连接,并在选项卡 2 中建立 hxr 流。

    【讨论】:

      猜你喜欢
      • 2023-02-22
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 2015-11-04
      • 2018-04-24
      • 2017-09-03
      • 2013-09-25
      相关资源
      最近更新 更多