Ich versuche, eine Basisverbindung zu einem HL7-Server zu öffnen, wo ich eine Anfrage senden und die ACK-Antwort erhalten. Dies wird kontinuierlich durchgeführt.Wann zu schließen und wieder zu öffnen Socket nach HL7-Nachricht gesendet
- Wenn dies kontinuierlich gemacht wird, wann schließe ich den Sockel? Implementiere ich das in diesem Fall richtig?
- Wenn ich die Steckdose schließe, wie öffne ich sie wieder? Die javadocs für ConnectionHub zeigt Folgendes an:
attach(java.lang.String host, int port, Parser parser,
java.lang.Class<? extends LowerLayerProtocol> llpClass)
Gibt eine Verbindung an die angegebene Adresse, um diese Verbindung zu öffnen, falls erforderlich.
Im wirklichen Leben wird jedoch keine neue Verbindung geöffnet, wenn sie bereits geschlossen wurde.
Patient patient = appt.getPatient();
Parser parser = new GenericParser();
Message hl7msg = parser.parse(wlp.getORMString(appt));
//Connect to listening servers
ConnectionHub connectionHub = ConnectionHub.getInstance();
// A connection object represents a socket attached to an HL7 server
Connection connection = connectionHub.attach(serverIP, serverPort,
new PipeParser(), MinLowerLayerProtocol.class);
if (!connection.isOpen()) {
System.out.println("CONNNECTION is CLOSED");
connection = connectionHub.attach(serverIP, serverPort, new PipeParser(),
MinLowerLayerProtocol.class);
if (!connection.isOpen()) {
System.out.println("CONNNECTION is still CLOSED");
}
}
Initiator initiator = connection.getInitiator();
Message response = initiator.sendAndReceive(hl7msg);
String responseString = parser.encode(response);
System.out.println("Received response:\n" + responseString);
connection.close();
Ergebnis: Der erste Durchgang durchläuft perfekt, mit Anforderung gesendet und ACK empfangen. Jeder nachfolgende Aufruf dieser Methode führt zu java.net.SocketException: Socket closed
"auf der Client-Seite. Wenn ich den connection.close()
Anruf entfernen, dann wird es gut laufen für eine gewisse Zeit, dann die Buchse wird sich schließen.
Vielen Dank für Ihre Antwort Dave. – don
Ich werde eine Art Block in den Server stellen, um auf die Bestätigung zu warten. Nur ein paar Fragen. Wenn ich die Verbindung mit dem Socket aufrechterhalte, scheint es sich nach einiger Zeit von selbst zu trennen. Wie öffne ich in diesem Fall den Socket erneut? – don