Java WebアプリケーションにREST-APIがあります。これには、顧客のAndroidアプリ(クライアント)から注文を受け取り、(価格計算などの一連のタスクの後に)クライアントに返信する方法があります。Javaでの非同期プログラミング - バックグラウンドプロセス
@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;
}
これは、クライアントが応答を待たなければならない場合があります。それは痛い。
回答を送信して、そのメールの内容をバックグラウンドで行う方法はありますか?
回答:http://stackoverflow.com/a/17758416/4275882 –