3

私は現在、GlassFish にデプロイされるエンタープライズ アプリケーションに取り組んでいます。GlassFish 3.1 にデプロイされた EJB 内から cassandra バックエンドと通信する正しい方法を見つけようとしています。ペロプスを使ってカサンドラと話したいです。

免責事項: 私は Java EE と、エンタープライズ アプリケーション サーバーと EJB の背後にある概念に慣れていません。このプロジェクトの目的の 1 つは、これらのトピックを学習することです。これは、この質問の範囲外です。私は、ベスト プラクティスの正しい方向性、またはベスト プラクティスを見つけるためにどこに行くべきかを指摘されたいだけです。これまでのところ、Google はこのトピックに関してあまり役に立ちませんでした/一貫性がありませんでした。

より具体的には、cassandra 用の JCA コネクタを作成することを検討する必要がありますか? Pelops 経由で cassandra と通信するシングルトン EJB を使用していますか? EJB で直接ペロプスを使用するだけですか? (ejbs でソケット接続を作成するべきではないと思っていましたが) まったく別の何か?

4

2 に答える 2

2

EJB仕様では、EJBがサーバーソケットを開くことは禁止されていますが、ソケットを開くことは禁止されていません。ただし、EJBによるスレッドの作成も禁止されています。Pelops(またはHector)は、そのプーリングを処理するためのスレッドを作成しますか?

法律の条文はさておき、これらのライブラリは両方ともプーリングを行うため、私にとってはリソースアダプタ層に属するもののように感じます。ライフサイクルがコンテナによって制御され、潜在的に非常に短く、ライフサイクルがある程度独立している接続プールのようなリソースにぶら下がっていて、もっと長くする必要があるEJBについては神経質になります。

とは言うものの、EJBのほとんどの実装は非常に寛容であるため、EJBから直接Pelops / Hectorを使用することがアーキテクチャ的に正しいかどうかにかかわらず、動作する可能性が非常に高くなります。

もし私が世界中にずっといたら、私はそれらのライブラリのどちらかをラップするリソースアダプタを書くでしょう。しかし、それはごくわずかな実際的な利益を追求するためのかなりのリソースの投資になるでしょう。

于 2011-10-18T10:09:34.163 に答える
1

EJB を実装していなくても、Glassfish 3.1 にバックエンドをデプロイし、内部で Cassandra と通信する小さなライブラリを作成しました。

現在、Cassandra を接続して操作するために最も使用されているライブラリは Hector です。

https://github.com/rantav/hector

それは非常に活発に開発されています。EJB 内で使用されているのを見たことはありませんが、使用しましたが、非常に安定しています。Pelopsがどのように開発されているかはわかりません。

ここで開発したのは、私たちのニーズに合わせてカスタマイズされた非常にカスタムなアプリケーションです。そのため、そもそも Hector を使用しませんでした。

EJB でクライアント ソケットを使用する限り安全です。EJB の制限は、アプリケーション サーバーによって処理されるサーバー ソケットに対するものです。しかし、他のニーズがある場合は、JCA を作成する必要があります。

于 2011-10-18T08:27:33.393 に答える