我有一个串行硬件设备,我想与多个应用程序共享,这些应用程序可能驻留在多个网络中的不同计算机上或跨越多个网络。一个关键的要求是系统必须支持双向通信,这样客户端/串行设备可以存在于防火墙和/或不同网络之后,并且仍然可以通过中央服务器相互通信(发送和接收)。系统的另一个要求是客户端必须能够确定网关/串行设备是否离线/在线。串行硬件设备的消息传递解决方案
该串行设备能够接收和发送数据包到无线网络。与串行设备通信的软件是用Java编写的,如果可能的话,我想让它保持100%的Java解决方案。
我目前正在使用Jive软件的Openfire服务器和Smack API查看XMPP。使用这种解决方案,串行设备上的数据包将通过XMPP传送到客户端。同样,任何客户端应用程序都可以通过Smack API将数据包发送到串行设备。数据包只是字节数组,大小限制在100字节左右,所以它们可以转换为十六进制字符串并作为消息正文中的文本发送。系统应该能够容忍客户端/串口设备处于脱机状态,这意味着它们会在再次可用时自动重新连接,但如果客户端处于脱机状态,数据包将被丢弃。数据包必须实时发送和接收,因此不希望离线传送。安全性应由消息系统提供,并提供客户端API。
我想听听其他可能的解决方案。我想过使用JMS,但它似乎有点太重量级,我不确定它是否支持了解客户端和/或网关/串行设备是否脱机的要求。
感谢您的回应。我已更新我的帖子以提供更多详细信息。我从帖子中删除了“最低限度”的措词,因为我真正想要的是最低的复杂性/编码工作。 – Andrew 2008-10-05 19:09:26