0

我想获得一些关于在 java web 框架中处理长计算任务以及如何回调到浏览器客户端的方法的一些输入。

我遇到过 JBoss 远程处理和 Spring 远程处理。

希望能够让客户端发送处理请求。处理可能需要 X 时间,并在完成后响应客户端。

欢迎任何利弊和建议。

谢谢。

4

3 回答 3

1

有几种方法可以实现:

  • 使用带有AsyncTask的 Servlet 3.0 。
  • Comet实现与您的 UI 的长轮询或服务器推送相结合。
  • 使用 HTML5 构建您的 UI,并利用WebSockets(最不便携的解决方案)。

JBoss 和 Spring Remoting也可能是可行的解决方案,但它们确实是为不同的目的而构建的。

于 2013-04-02T03:26:35.247 回答
0

为 Web 应用程序执行长时间的计算任务和服务器推送是两件不同的事情,真的。

如前所述,使用 Comet 的 Web 应用程序将允许服务器推送(这是一个术语,即 Web 服务器可以在浏览器不发起请求的情况下向浏览器推送更新)。有一些框架建立在此之上。ICEfaces、Primefaces 和 ZK 是三个支持这一点的 Web 应用程序框架。Flex 也支持从服务层推送数据。

异步执行可以是任何简单的东西,就像产生的线程运行并具有足够的信息来启动服务器推送过程回客户端。您还可以使用基于消息的解决方案来处理长流程的异步执行。

那里有很多选择,实际上取决于您当前正在使用哪些工具/框架并找到合适的选择。

于 2013-04-02T03:46:13.610 回答
0

您可以使用 GWT,它可以很好地处理异步调用。我在很多应用程序的后台完成了大量的数据加载。一直以来,用户都可以与各种视图等进行交互......它非常无缝地集成到 GWT 中,具有他们自制的 rpc 机制。此外,如果您也需要,也可以使用 JBoss Errai 进行推送(当然在 gwt 内)。值得一看。

我必须将 Icefaces 用于一些遗留项目,而且做同样的事情非常困难。GWT 只是让它变得简单。Icefaces 您需要使用 JS,除非您将异步调用绑定到按钮等组件并确保请求没有排队。很乱。

我猜只是我的两分钱。

于 2014-09-22T18:50:51.003 回答