中止或终止请求,这需要很长时间才能回复

时间:2018-02-20 17:06:10

标签: web-services jpa jax-rs ejb-3.0 smartgwt

我有一个使用SmartGWT,Jaxrs,ejb &jpa开发的应用程序。

  • 我有一个场景,用户想通过输入名字,姓氏或中间人,ssn,电子邮件等来提取数据(称为搜索屏幕)
  • 数据库包含数百万的大量记录,这需要花费大量时间来回复。
  • 例如,使用firstname的用户搜索需要花费大量时间来回复,在这种情况下,用户希望cancel/terminate/abort请求。
  • 是否可以在smartgwt或jaxrs(web api)中终止请求。 这样用户就可以终止请求并进一步移动

PS ::我尝试了很多选项,但我没有得到正确的解决方案。

1 个答案:

答案 0 :(得分:0)

一种解决方案是将业务逻辑放在有状态bean中并将bean放在http会话中......现在您可以访问当前使用的持久性上下文和打开的事务,因此您可以调用Session.cancelQuery() .. ..但是这个方法有一些限制..只有在尚未返回结果集的情况下才有效,如果此限制对您有害,请检查this answer please

还有其他解决方法可以将Web客户端与业务方法同步,但这是我最喜欢的

您需要考虑的另一件事是,这是您的用例是引入一个新的词汇搜索引擎,如solr或elasticsearch,可以使用数据库中的数据进行频繁更新...它非常适合词汇搜索,给出了能够很快忍受拼写错误并返回结果