【发布时间】:2017-02-21 00:30:55
【问题描述】:
我的 Java Web 应用程序中有一个 REST-API。这有一种方法可以从客户的 Android 应用(客户端)接收订单并(在完成一系列任务后,例如价格计算等)向客户端发送响应。
@POST
@Path("order")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public OrderResponse takeOrder(OrderRequest request
) throws IOException {
OrderResponse response = new OrderResponse();
String token = request.getTokenString();
CustomerSession session = sessionPool.getSession(token);
if (session != null) {
OrderHeader order = new OrderHeader();
order.setFkOrderHeaderCustomerID(session.getFkCustomerID());
order.setOrderCreationDate(new Date());
获取会话以进行身份验证等任务必须同步完成,当然。因为客户的反应取决于它的成功或失败......到目前为止一切都很好。
在此方法结束时,客户会收到一个关于其订单请求状态的email。
Email email = EmailGenerator.createOrderEmail(order);
try {
emailService.send(email);
} catch (MessagingException ex) {
Logger.getLogger(CustomerREST.class.getName()).log(Level.SEVERE, null, ex);
}
response.setStatus(OrderStatusEnum.SUCCESS);
} else {
response.setStatus(OrderStatusEnum.TOKEN_INVALID);
}
return response;
}
这有时需要几秒钟,客户端必须等待响应。好痛。
有什么方法可以发送回复并在后台处理电子邮件吗?
【问题讨论】:
标签: multithreading asynchronous