【问题标题】:Jax-rs returning response before db operationsJax-rs 在数据库操作之前返回响应
【发布时间】:2014-02-07 13:27:12
【问题描述】:

我正在使用带有 Jersey (Java EE 6) 的 Rest Services

当客户端向服务器发送请求时,一些操作服务器向客户端发送响应后, 不幸的是,我花了太多时间以不好的方式影响客户端,所以我试图在数据库操作之前从服务器向客户端发送响应,但我无法设计它。发送响应后有什么方法可以进行数据库操作。实际上我的目标是服务器返回响应而不等待数据库更新。

谢谢

【问题讨论】:

    标签: java rest jakarta-ee jersey jax-rs


    【解决方案1】:

    您可能会调用@Asynchronous EJB 来进行数据库更新 (http://docs.oracle.com/javaee/6/tutorial/doc/gkkqg.html),但是您必须处理数据库更新失败的情况。 您可以向客户端返回一个临时位置,以便它可以发送后续请求以获取数据库操作的状态(成功/进行中/失败)。

    【讨论】:

    • 我正在尝试这样做,但我对 DAO 提出了一个例外,我认为该实体无法使用异步方法。
    • 你遇到了什么异常?
    • 我采取了optimisticlockexception,我使用多线程jpa来使用异步方法,结果我采取了一个OptimisticLockException
    • 这并不是说异步方法失败了,而是很多线程同时修改了实体。
    • 您是否在多个客户端修改相同数据的情况下测试了应用程序?
    【解决方案2】:

    看看https://jersey.java.net/documentation/latest/async.html。可以使用 AsyncResponse。

    【讨论】:

      猜你喜欢
      • 2012-02-06
      • 1970-01-01
      • 2017-01-29
      • 2018-02-22
      • 2012-09-01
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多