Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat-响应后做事情_Java_Android_Tomcat_Httpresponse - Fatal编程技术网

Java Tomcat-响应后做事情

Java Tomcat-响应后做事情,java,android,tomcat,httpresponse,Java,Android,Tomcat,Httpresponse,我有一个servlet,用于在android中上传应用程序的数据库 数据库是在服务器端处理的,但这可能需要一段时间 目前,我返回的回复是,使用PrintWriter.write()上传成功 在将响应发送到客户端(我的android应用程序)后,是否有办法开始处理该文件 如果我向另一个servlet发送重定向,或者使用dispatcher转发请求,那么在执行处理的servlet完成之前,我不会得到响应 最好的方法是什么,立即响应用户,让数据库开始处理并将结果发送回android(注意,这可能需要5

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

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

目前,我返回的回复是,使用PrintWriter.write()上传成功

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

如果我向另一个servlet发送重定向,或者使用dispatcher转发请求,那么在执行处理的servlet完成之前,我不会得到响应


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

后端处理可以通过作业完成,例如通过Quartz。如果可以用JBoss AS、Glassfish或Resin替换服务器,则简单的@Asynchronous注释方法也可以在此处完成此任务

您确实可以不断轮询服务器,询问它是否已经完成了。这也是web环境中大多数基于AJAX的进度条所做的


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

所以tomcat是不可能做我想做的事情的。一点也不!但是tomcat只是非常简单。它实现Servlet和JSP以及其他很少的功能。可以添加额外的功能,但是你必须自己去做。我提到的其他服务器已经有了这个功能。因为这只是为了我的个人项目,没有什么关于生产准备的东西,我会让JBoss试一试,因为这是你在列表中首先提到的,除非你另有建议。同意。一个带有@Asynchronous方法的EJB是最好的选择。确保你得到最新版本的JBoss。它实现了EJB3.1规范,比以前的规范更方便用户。@arjan是有没有一个关于JBoss/Servlet和Quartz作业的例子可以参考?