如何处理Spring State Machine中的全局资源?

时间:2016-11-25 09:52:01

标签: spring-statemachine

我正在考虑将Spring State Machine用于TCP客户端。协议本身是基于具有消息id和长度字段的专有TCP消息给出的。客户端建立与服务器的TCP连接,发送消息并始终在发送下一条消息之前等待响应。在每个州,只允许某些回复。多个客户端必须并行运行。

现在我有以下与Spring State机器相关的问题。

1)在从断开连接到连接的初始转换期间,客户端通过java.net.Socket建立连接。如何使这个套接字(或从套接字获取的DataOutputStream和BufferedReader对象)可用于其他转换的操作?

从这个意义上讲,套接字将是状态机的某种全局资源。到目前为止,我看到的唯一方法是将它放在邮件头中。但这看起来并不自然。

2)Spring State Machine需要哪个运行时环境?

JVM是否足够,还是需要Tomcat?

它是线程安全的吗?

谢谢,沃尔夫冈

1 个答案:

答案 0 :(得分:0)

  1. 使用事件标头没有任何问题,但这些并不是真正的全局资源,因为标头仅在事件处理期间存在。我尝试将所需的对象添加到计算机extended state中,然后可用于所有操作。
  2. 你只需要JVM。在默认情况下,机器执行是同步的,因此不应存在任何线程问题。如果您想要异步替换底层执行程序,文档会注意到(这通常在使用多个并发区域时完成)。