1

EJB3 についての私の (おそらくあまりにも単純な) 理解は、それが POJO をビジネス ロジックの Java EE 準拠の単位に変える方法であるということです。再利用可能で、複数のプロジェクトにまたがるさまざまなバックエンド アーキテクチャに「プラグイン」できます。これは、真のコンポーネント駆動型アーキテクチャへの一歩です。これらの主張のいずれかが真実でない場合は、まず私を訂正してください!!

これらの項目について私が正しければ、EJB3 が Apache Camel のような ESB にどのように/どこで/いつ/どのようにスナップされるのか疑問に思っています。WireTapCamel では、通常、各エンドポイントは、Filter、またはのような EIP を実装しますTransformer。EJB (具体的には EJB3) がこれらの EIP/SOA パターンのどれに適合するのか疑問に思っています。シンプルFilterですか?他の何か?

私の質問の根底にあるのはこれだと思います:

  • Camel Route を構築している場合、他の EIP ではなく、EJB3 をエンドポイントにするのはいつですか? ESB での EJB3 の使用例と、EJB3 が他の EIP よりも優れているのはどのような場合ですか?
4

3 に答える 3

2

この場合、正解も不正解もありません。

EJB は JavaEE アプリケーション サーバーに非常によくプラグインされ、ビジネス ロジックを EJB 内の Java コードとしてカプセル化するアーキテクチャを提供するように構築されており、アプリケーション サーバーがスケーリング、スロットリング、フェイルオーバー、クラスタリング、ロード バランシングなどを処理できるようにします。 EJB から通信プロトコル (Web サービスまたはメッセージ駆動型 Bean の JMS)。

Camel で動作させたいフルスタックの Java EE アプリケーションをすでに持っていない限り、EJB を Apache Camel のビジネス ロジック コンテナーとして導入しても意味がないと思います。

Camel には、 bean-bindingを介して「実際の」pojos に接続するための優れた機能セットがあります。

ビジネス ロジックには単純な Java Bean/pojo を使用することをお勧めします。キャメルの豊富なコネクタ セットを介して他のアプリケーションに簡単にプラグインできます。さまざまなキャメル EIP を実装するための複数のオプションがあります。一般的な方法の 1 つは Java コードを使用することですが、変換用の XSLT とフィルター用の groovy も同様に一般的です。単純なフィルターに EJB を使用することはありませんが、Java EE アプリ内で複雑なロジックを呼び出します。または、通常はすべて (MDB を除く) を一緒に回避し、代わりにアプリケーション サーバーとの JMS 通信を調べます。

于 2012-06-19T07:21:25.407 に答える
1

基本的に、EJB はサービスです。サービスの背後にある考え方は、コンシューマーとして作成する必要なく、単純に使用できるということです。さらに、多くの場合、サービスはレジストリで検索できます。

したがって、私のアドバイスは、Bean impl のインスタンス化が簡単な場合には単純な Bean 統合を使用し、それが難しい場合にはサービスを使用することです。そのため、サービスを提供するコンポーネント内に初期化をカプセル化できます。

私は定期的に EJB を使用していませんが、概念が EJB に非常に似ている OSGi サービスをよく使用します。

于 2012-06-19T14:39:29.037 に答える
0

以前の回答に加えて、SOA は具体的なテクノロジ スタックというよりも、特定の要件を備えたアプローチであることに言及したいと思います。少なくともオペレーション システム、プラットフォーム、言語に関係なく、EJB3 Bean または OSGI サービスをネットワーク経由で操作できるようにすると、サービス指向のシステムになります。したがって、EJB と OSGI または Spring を利用したアプリケーションは、SOA の要件を満たしている場合、SOA に適合します。

于 2012-06-20T04:53:47.767 に答える