JAX-RS:在将响应发送到浏览器后执行操作

时间:2015-05-06 13:09:48

标签: java-ee jax-rs

我的目标是在 RestFul服务返回响应后执行操作。

我有下面的方法,但不确定何时执行操作,因为方法返回后我无法控制。有什么想法吗?

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("/somepath")
public javax.ws.rs.core.Response someMethod (final RequestObject req) {

    // some actions

    return javax.ws.rs.core.Response.status(200).entity("response").build();

   //  here I would like to perform an action after the response is sent to the browser
}

1 个答案:

答案 0 :(得分:3)

你不能。 Java没有这样的工作方式。

只需触发@Asynchronous服务电话即可。它会立即发射并忘记"一个单独的线程。

@EJB
private SomeService someService;

@POST
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
@Path("/somepath")
public Response someMethod(RequestObject request) {
    // ...

    someService.someAsyncMethod();
    return Response.status(200).entity("response").build();
}
@Stateless
public class SomeService {

    @Asynchronous
    public void someAsyncMethod() { 
        // ...
    }

}

另一种方法是servlet过滤器。