3

管理用の Web インターフェイスを備えた TCP サーバーを実装する必要があります。

基本的に、tcp サーバーは新しい接続をリッスンし、現在の接続をアクティブに保ちますが、Web インターフェイスを使用すると、これらの接続に関する情報を確認し、それらとやり取りすることができます (メッセージの送信や受信した接続の確認など)...

私の懸念は、Web アプリケーションとの「TCP サーバー」の統合にあります。受信したメッセージについては、単純に共有 DB を使用できますが、TCP サーバーに接続されたピアにメッセージを送信する必要があります。

私の最善の策は、現在JCAです。いくつかの調査で、 http://code.google.com/p/jca-socketsという素晴らしいサンプルが見つかりました。このサンプルでは、​​Message Driven Bean を使用して、ポート 9000 経由で受信したメッセージを処理し、エコー サーバーとして機能します。

私は Java EE 6 の世界では初めてです。サンプルで何らかの方法で処理が行われた理由を理解しようとしています (たとえば、なぜ MDB なのか?)。

JCA の仕様はかなり複雑です。そのため、最初は上記のサンプルを適応させて、接続をアクティブにしてデータを交換しようとしています。私の次のステップは、サーブレットを介して文字列を受け入れ、特定のピアに転送するように適応させることです。

誰かがこれについて私を助けることができますか?

4

1 に答える 1

3

まず第一に、TCP で Java EE を使用するのは最善の方法ではありません。Web UI を備えた単純な TCP サービスだけが必要な場合は、Java SE を Web コンテナーに接続して使用することを検討することをお勧めします (undertow はうまく機能します)。

一方、アプリケーションを会社の既存の Java EE インフラストラクチャに統合する必要がある場合は、JCA が最適なアプローチです。JCA はそのような用途向けには設計されていませんが、TCP ネットワーキングが機能するために必要なスレッド管理に十分対応できる唯一の EE サブシステムです。

上記で参照している JCA-Socket は、JCA アプリの最良の例ではありません。WorkManager スレッドをブロックすることで、プレーンな Java のブロック ソケットを使用しますが、これはあまり効果的ではありません。現在は状況が大幅に改善され、Java NIO と Netty を使用して、非常に効果的な生のネットワークで作業できるようになりました。私はTCPインタラクション用のJCAコネクタを持っています。これはあなた自身を構築するためのスケルトンを提供するかもしれません. 気軽に拡張して貢献してください。

PS MDB について: メッセージ駆動型 Bean は、非同期着信メッセージ処理の唯一の「合法的な」JCA アプローチです。TCP は非同期であるため、すべての機能を開始するには、アプリケーションに必ず TCP が必要です。送信されるデータ転送は、Bean に注入するさまざまな ConnectionFactory インターフェースを介して行われます。上記のリンクは、参照用の ConnectionFactory 実装と、ConnectionFactory と MDB メッセージング アプローチの両方を利用する単純なテスター アプリを提供します。

于 2016-04-18T16:24:09.243 に答える