我有一个使用 Java/Spring 的客户端/服务器应用程序。客户端通过 httpinvokers 访问服务器并发出返回序列化对象的请求。
我们有一个调用来拉取一个非常大的 50mb + 序列化对象。显然,这个调用需要几分钟的时间来处理。有没有办法跟踪此通话的进度?例如,如果我可以在调用过程中测试传输的数据量(也许可以使用单独的线程),那就完美了。
谢谢
最佳答案
您必须进行 2 个不同的调用(第二个调用是异步的)。您的服务器将实现观察者模式来更新传输到正在观察它的对象的数据。服务器将以 block 而不是流的形式写入这 50MB 数据。
观察者类将是您将异步调用的另一个类。观察者将不断返回已传输的数据量。
这与 HTML5 发布之前 Gmail 在附件上传进度条中实现的概念相同。他们所做的是,通过 html 控件上传在服务器端编写的附件,同时,他们使用 flash 对象向该服务器发送调用,以查看已保存了多少数据。
关于java - 跟踪拉取序列化对象的远程调用的进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9745725/