栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

异步JAX-RS的目的是什么

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

异步JAX-RS的目的是什么

内容提要: 您对此考虑过多。


在示例1和2中,Web服务器线程(处理请求的线程)死亡,我们创建了另一个后台线程。异步服务器背后的整个想法是减少空闲线程。这些示例没有减少空闲线程。一个线程死亡,另一个线程出生。

老实说,这两者都不是特别棒。在生产服务中,您不会将执行程序保留在这样的私有字段中,而是将其作为单独配置的对象(例如,其自己的Spring
bean)。另一方面,如果没有更多上下文,那么这样一个复杂的示例将使您难以理解。包含bean
/受管资源系统的应用程序必须从头开始构建。对于小规模的工作,要特别注意这一点也不是很重要,这是 很多 Web应用程序。

令人抓紧的是,首先不必担心从服务器重新启动进行恢复。如果服务器重新启动,您可能仍然会丢失所有连接,并且如果这些

AsyncResponse
对象不是
Serializable
以某种方式(不能保证它们是或不是),则无法将它们存储在数据库中以进行恢复。最好不要担心太多,因为您无能为力!(如果客户还没有收到任何回复,他们也会在一段时间后超时;您不能无限期地等待他们。)

我认为在容器内创建非托管线程是一个坏主意。我们仅应在Java EE 7中使用并发实用程序来使用托管线程。

这是一个例子!从外部为执行机构生产所需的执行器。

同样,异步服务器背后的想法之一就是扩展规模。示例3无法缩放,是吗?

它只是将一个对象排入列表,这根本不是一个很慢的操作,尤其是与进行所有网络连接和反序列化/序列化的成本相比时。它没有显示的是应用程序的其他部分,这些部分将列表中的内容去除,执行处理并将结果返回;它们可能实施不当并导致问题,或者可以仔细完成并且系统运行良好。

如果您可以在代码中做得更好, 则一定要这样做
。(请注意,您无法将工作项存储在数据库中,或者至少无法确定您是否可以做到这一点,即使它确实有可能。我对此表示怀疑;但可能会有信息有关其中的TCP网络连接的信息,而要完全存储和恢复它绝非易事。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483826.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号