2014-12-09 44 views
0

我正在用Java實現RESTfull Web服務,即使系統崩潰,它也應該以可靠的方式計算每個調用。發生潛在故障後,系統應能夠查找系統崩潰時打開的所有作業,並繼續進行系統崩潰時的計算。最好的方法來保存可調用的REST調用,以保證可靠的句柄系統故障

實現該任務的最佳方式是什麼? JMS是否是正確的方向?

+0

你能告訴我們更多關於工作的信息嗎? – mkrakhin 2014-12-09 12:54:04

+0

JMS將成爲進行RESTful調用的替代品 - 它是一種不同的進程間通信方法。那不是你所追求的。可能是因爲JMS支持用於故障恢復的消息持久性 - 這就是您實際上在做的事情;在RESTful環境中做類似的事情。正確? – Gimby 2014-12-09 12:57:13

+1

RESTful服務使用HTTP作爲通信協議。這是一個無國籍的協議:沒有*開放工作的概念*。你的問題沒有意義。 – Raedwald 2014-12-09 13:08:01

回答

0

您可以嘗試使用RestEasy。

在RestEasy中,您可以在執行REST調用之前和之後綁定處理程序。

您可以在REST處理程序上存儲REST調用並在完成後確認執行。

如果REST沒有執行......它可以重試,或者重複動作。

的代碼會是這個樣子(REQUEST):

@Provider 
public class RestInterceptor implements ContainerRequestFilter { 

    @Override 
    public void filter(ContainerRequestContext context) { 

RESPONSE

@Provider 
public class EventFilter implements ContainerResponseFilter { 

    @Override 
    public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) throws IOException { 

的問題是爲什麼?

REST調用應該是在30秒內執行的簡單原子任務。 加上他們應該(如果可能)冪等。

如果你想用REST調用來觸發和監控長時間運行的任務,那麼這是一條路。但是作業本身應該在其他層面(而不是HTTP堆棧)上分離和監視。

+0

REST接口是原子的。我想將調用存儲在REST接口後面,以確保從REST接口觸發的REST接口背後的正確計算。 – hans 2014-12-09 14:08:41

+0

然後,它可能是最好的改寫你的問題。我不認爲REST界面是監視執行的正確位置。 – Drejc 2014-12-17 12:40:49

相關問題