gpt4 book ai didi

java - Tomcat - 响应后做事

转载 作者:行者123 更新时间:2023-11-28 22:09:59 25 4
gpt4 key购买 nike

我有一个 servlet,用于在 android 中上传我的应用程序的数据库。

数据库在服务器端处理,但这可能需要一段时间。

目前,我只是返回一个响应,表明使用 PrintWriter.write() 上传已成功。

在将响应发送到客户端(我的 android 应用程序)后,是否有办法开始处理文件?

如果我将重定向发送到另一个 servlet 或使用调度程序转发请求,在执行处理的 servlet 完成之前我不会收到响应。

最好的方法是立即响应用户,让数据库处理开始并将结果发送回 android(注意这可能需要 5 分钟或 10 分钟,具体取决于数据库 - 所以我假设我需要某种监听器来在服务器上轮询结果是否已被处理并准备好在客户端上显示)

最佳答案

后端处理可以通过作业完成,例如通过 quartz 。如果服务器可以用 JBoss AS、Glassfish 或 Resin 替换,一个简单的 @Asynchronous 注释方法也可以在这里完成这项工作。

您确实可以连续轮询服务器以询问它是否已经完成。 Web 环境中大多数基于 AJAX 的进度条也是这样做的。

或者,您可以使用反向 AJAX (Comet) 来防止轮询(参见例如 http://atmosphere.java.net/ )。在这种情况下,服务器能够在完成后立即将响应推送回给您。这确实需要在您的服务器上进行某种事件处理。如果您可以用 JBoss AS 或 Glassfish 替换服务器,那么 CDI 事件总线可能是一个选项。否则,您调用 wait/notify 的 HTTP session 中的共享对象是一种粗略的替代方法。

关于java - Tomcat - 响应后做事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5282213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com