2011-01-18 12 views
1

私のアプリケーションでは、JBoss(バージョン5)に基づいてUDPパケットをリッスンする必要があります。Java EE(EJB 3.0)環境でDatagramSocketから読み取る

最も簡単な方法は、特定のポート(JBoss @ServiceシングルトンBeanを使用)でDatagramSocketを開き、receive(...)メソッドを呼び出すことです。最初の部分はかなり簡単です - 私はそれをテストし、期待どおりに動作します。 2番目の部分 - 受信パケットはより複雑です。

私はそのようなコードの設計について疑問に思います。 DatagramSocket javadocに記述されているように、receiveはブロック操作です。パケットが取得されるまでブロックされます。それが速く、スケーラブルで、スレッドセーフであることを確認するためにコードを作成する方法は?

シングルトンへの参照を保持しているコネクションを持つステートレスBeanの作成について考えましたが、これらのBeanはreceiveメソッドを呼び出していますが、JBossがどのようにそれらを管理するかはよく分かりません(1つのBeanはReceive()ブロックされます)。 使用するパターンはありますか?

答えて

0

Apache Camelなどのオープンソースフレームワークは、これらの種類の使用例をサポートするためのものです。それらは十分にテストされており、プロダクションで作業していることが証明されています。私の提案は、自分のライブラリを作成するよりも、それらのライブラリに依存することです。

+0

ありがとうございました。残念ながら、それは他の多くの機能を備えた大きなプロジェクトの一部です。一般的に、非ネイティブEJBソリューションを使用することはお勧めしません。 –

+0

@ Piotrek-De - 私はあなたのアプリケーションにリソースアダプタとしてcamelをデプロイできると信じています。これは仕様に準拠しており、リソースアダプタはこれらの用途に適したJ2EEソリューションです。 –

関連する問題