2016-11-25 29 views
0

我正在考慮爲TCP客戶端使用Spring狀態機。該協議本身給出並基於具有消息ID和長度字段的專有TCP消息。客戶端建立到服務器的TCP連接,發送消息並始終在發送下一條消息之前等待響應。在每個州,只有某些答覆是允許的。多個客戶端必須並行運行。如何處理Spring State Machine中的全局資源?

現在我有以下有關Spring狀態機的問題。

1)在從斷開到連接的初始轉換過程中,客戶端通過java.net.Socket建立連接。我怎樣才能使這個套接字(或從套接字獲得的DataOutputStream和BufferedReader對象)可用於其他轉換的動作?

從這個意義上說,套接字將是狀態機的某種全局資源。到目前爲止,我看到的唯一方法是將其放入郵件標題中。但這看起來不太自然。

2)Spring State Machine需要哪個運行環境?

JVM是否夠用還是需要Tomcat?

它是線程安全的嗎?

感謝,沃爾夫岡

回答

0
  1. 沒有什麼錯用事件的信息,但是作爲頭只存在一個事件處理的持續時間這些並不是真正的全球資源。我會嘗試將所需的對象添加到機器的extended state,然後可用於所有操作。
  2. 您只需要JVM。在默認的機器上執行是同步的,所以不應該有任何線程問題。如果您想要替換底層執行程序異步(如果使用多個併發區域,通常會執行此操作),Docs會記錄這些內容。
+0

嗨Janne,謝謝你的迴應。事實上,就我在擺姿勢後不久我轉向使用擴展狀態的全球資源而言。這按預期工作。最好的問候,沃爾夫岡 – WolfgangB