【问题标题】:when to close and reopen socket after HL7 message sent发送 HL7 消息后何时关闭和重新打开套接字
【发布时间】:2011-05-17 08:11:38
【问题描述】:

我正在尝试打开与 HL7 服务器的基本连接,我在该服务器上发送请求并获得 ACK 响应。这将持续进行。

  1. 如果连续进行,我什么时候关闭套接字?在这种情况下,我是否正确实施?
  2. 如果我关闭了套接字,如何再次打开它? ConnectionHub 的 javadocs 指出以下内容:
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() 调用,那么它会在一段时间内正常运行,然后套接字会自行关闭。

【问题讨论】:

    标签: java sockets hl7


    【解决方案1】:

    如果您通过 HL7 2.X 进行通信,则套接字上的预期行为是从不断开连接——您分配连接并保持套接字处于活动状态。换句话说,HL7 应用程序像网络浏览器一样在其中根据需要连接并在完成时断开连接。相反,两端都在工作以保持套接字持续连接。如果您断开连接,大多数应用程序都会感到恼火。此外,如果您断开连接的时间过长,大多数集成引擎都会发出警报。

    连接套接字后,您需要使用 HL7 最小低层协议(MLLP 或 MLP)来传送 HL7 2.X 内容。如果您正在发送数据,您应该在发送下一条消息之前等待 HL7 确认。如果您正在接收数据,您应该生成 HL7 Ack。

    参考资料:

    MLP - http://www.hl7standards.com/blog/2007/05/02/hl7-mlp-minimum-layer-protocol-defined

    Acks - http://www.corepointhealth.com/resource-center/hl7-resources/hl7-acknowledgement

    【讨论】:

    • 感谢您的回复戴夫。
    • 我会放一些块来等待来自服务器的确认。只是几个问题。如果我保持与套接字的连接,它似乎会在一段时间后自行断开连接。在这种情况下如何重新打开套接字?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2015-01-09
    • 2020-05-15
    • 1970-01-01
    相关资源
    最近更新 更多