我想开到哪里发送请求并获得ACK响应的HL7服务器的基本连接。这将不断完成。时关闭和HL7消息之后重新打开套接字发送
- 如果这是连续进行的,我什么时候关闭插座?在这种情况下,我是否正确实施了这个?
- 如果我关闭套接字,我如何再次打开它?对于ConnectionHub的javadoc说明如下:
attach(java.lang.String host, int port, Parser parser,
java.lang.Class<? extends LowerLayerProtocol> llpClass)
返回一个连接到指定的地址,打开此连接,如果必要的。
但是,在现实生活中,如果它已经关闭,它不会打开新的连接。
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();
结果: 第一遍经过完美,与请求一起发送和ACK接收。在java.net.SocketException: Socket closed
此方法将导致“任何后续调用的客户端。 如果我删除了connection.close()
通话,那么它会在一定的时间内运行良好,则套接字将关闭本身。
感谢您的答复戴夫。 – don 2010-12-01 13:32:23