Ich denke daran, Spring State Machine für einen TCP-Client zu verwenden. Das Protokoll selbst ist gegeben und basiert auf proprietären TCP-Nachrichten mit Nachrichten-ID und Längenfeld. Der Client richtet eine TCP-Verbindung zum Server ein, sendet eine Nachricht und wartet immer auf die Antwort, bevor er die nächste Nachricht sendet. In jedem Zustand sind nur bestimmte Antworten zulässig. Mehrere Clients müssen parallel ausgeführt werden.Wie behandelt man globale Ressourcen in Spring State Machine?
Jetzt habe ich die folgenden Fragen im Zusammenhang mit Spring State Maschine.
1) Während des ersten Übergangs von getrennt zu verbunden baut der Client eine Verbindung über java.net.Socket auf. Wie kann ich diesen Socket (oder die DataOutputStream und BufferedReader-Objekte aus dem Socket bekommen) für die Aktionen der anderen Übergänge verfügbar machen?
In diesem Sinne wäre der Socket eine Art globale Ressource der Zustandsmaschine. Die einzige Möglichkeit, die ich bisher gesehen habe, wäre, sie in die Kopfzeilen der Nachricht einzufügen. Aber das sieht nicht sehr natürlich aus.
2) Welche Laufzeitumgebung brauche ich für Spring State Machine?
Ist eine JVM ausreichend oder benötige ich Tomcat?
Ist es threadsicher?
Danke, Wolfgang
Hallo Janne, danke für deine Antwort. In der Tat, für die globalen Ressourcen habe ich kurz nach meiner Pose den erweiterten Zustand aktiviert. Das funktioniert wie erwartet. Beste Grüße, Wolfgang – WolfgangB