在 Web.xml 中支持异步的目的是什么?

2022-09-01 03:14:46
<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


答案 1

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

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

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

此技术取代了从客户端发出不必要的定时请求来获取可能以不确定的时间间隔更改的数据的需要。它通过不挂在线程上以可扩展的方式做到这一点。


一些示例用例包括:

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

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

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

这是一个很好的教程。这也涵盖了java中的一些螺母和螺栓。


答案 2

主要目的是启用 XHR 流作为 Websockets 的回退机制。如果未显式配置为 true,则应用程序无法回退到 XHR 流,这将导致 java.lang.IllegalArgumentException:必须在 servlet 上启用异步支持。...

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

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


推荐