私は、複数のアプリケーションと共有したいシリアルハードウェアデバイスを持っています。重要な要件は、クライアント/シリアルデバイスがファイアウォールの背後および/または異なるネットワーク上に存在し、中央サーバを介して互いに(送信および受信しながら)通話できるように、システムが双方向通信をサポートしなければならないことです。このシステムのもう1つの要件は、クライアントがゲートウェイ/シリアルデバイスがオフライン/オンラインであるかどうかを判断できる必要があることです。シリアルハードウェアデバイス用のメッセージングソリューション
このシリアルデバイスは、ワイヤレスネットワークにパケットを送受信できます。シリアルデバイスと通信するソフトウェアはJavaで書かれています。可能であれば、100%Javaソリューションにしておきたいと思います。
私は現在、JiveソフトウェアのOpenfireサーバーとSmack APIを使用してXMPPを検討しています。このソリューションでは、シリアルデバイスから取り出されたパケットは、XMPP経由でクライアントに配信されます。同様に、どのクライアントアプリケーションもSmack API経由でシリアルデバイスにパケットを送信することがあります。パケットはバイト配列であり、サイズは約100バイトに制限されているため、16進文字列に変換してメッセージの本文にテキストとして送信することができます。システムは、クライアント/シリアルデバイスがオフラインになるのを許容する必要があります。つまり、再利用可能なときに自動的に再接続しますが、クライアントがオフラインの場合はパケットは破棄されます。パケットはほぼリアルタイムで送受信する必要があるため、オフライン配信は望ましくありません。セキュリティは、メッセージングシステムと提供されたクライアントAPIによって提供される必要があります。
可能な解決策についてお聞きしたいと思います。私はJMSを使用することを考えましたが、それはちょっと重すぎるようです。クライアントやゲートウェイ/シリアルデバイスがオフラインかどうかを知る必要があるかどうかは分かりません。
ありがとうございました。私はいくつかの詳細を提供するために自分の投稿を更新しました。私が本当に欲しいのは、最低の複雑さ/コーディング努力であるから、ポストから「最低のフットプリント」の言葉を削除しました。 – Andrew