【问题标题】:Abort or terminate the Request which takes long time to respond back中止或终止需要很长时间才能响应的请求
【发布时间】:2018-07-31 03:05:05
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢 osama 的回复..我已经尝试将其添加到线程中并终止,但它不起作用..再次实现弹性搜索并不那么容易..任何其他方式
    • 欢迎兄弟...您在持久性上下文仍然打开的情况下尝试过吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    相关资源
    最近更新 更多