TCP クライアントに Spring State Machine を使用することを考えています。プロトコル自体は指定され、メッセージ ID と長さフィールドを持つ独自の TCP メッセージに基づいています。クライアントはサーバーへの TCP 接続をセットアップし、メッセージを送信し、次のメッセージを送信する前に常に応答を待ちます。各状態では、特定の応答のみが許可されます。複数のクライアントを並行して実行する必要があります。
ここで、Spring State マシンに関連する次の質問があります。
1) 切断から接続への最初の移行中に、クライアントは java.net.Socket を介して接続をセットアップします。このソケット (またはソケットから取得した DataOutputStream および BufferedReader オブジェクト) を他の遷移のアクションで使用できるようにするにはどうすればよいですか?
この意味で、ソケットはステート マシンのある種のグローバル リソースになります。これまでに見た唯一の方法は、メッセージヘッダーに入れることです。しかし、これはあまり自然に見えません。
2) Spring State Machine にはどのランタイム環境が必要ですか?
JVM で十分ですか、それとも Tomcat が必要ですか?
スレッドセーフですか?
ありがとう、ヴォルフガング