我正在考虑将Spring State Machine用于TCP客户端。给出了协议本身,并基于具有消息ID和长度字段的专有TCP消息。客户端将TCP连接到服务器,发送消息并始终在发送下一个消息之前等待响应。在每个状态下,仅允许某些响应。多个客户必须并行运行。
现在我有以下与春季机器有关的问题。
1)在最初从断开连接到连接的客户端通过java.net.socket建立连接的最初过渡。如何使此套接字(或DataOutputStream和BufferedReader对象从套接字中获得)可用于其他过渡的操作?
从这个意义上讲,插座将是状态机的某种全局资源。到目前为止,我看到的唯一方法就是将其放入消息标题中。但这看起来不是很自然。
2)我需要哪个运行时环境?
jvm足够了,还是我需要tomcat?
是线程安全吗?
谢谢,沃尔夫冈
- 使用事件标题没有错,但是这些并不是真正的全球资源,因为仅在事件处理的时间内存在标头。我会尝试将所需的对象添加到机器的
extended state
中,然后适用于所有操作。 - 您只需要JVM。在默认机器上,执行是同步的,因此不应存在任何线程问题。文档是否要替换基础执行人异步(如果使用多个并发区域,通常可以完成)。 )。