我的目标是在 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
}
答案 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过滤器。