1. ホーム
  2. java

ビジネス層はEJB3とSpringのどちらを使うべきですか?

2023-11-09 10:27:17

質問

私のチームは、Web フロントエンドを備えた新しいサービス指向の製品を開発しています。 使用するテクノロジーについての議論では、JBoss アプリケーション サーバーと Flex フロントエンド (Adobe AIR を使用してデスクトップ展開することも可能)、およびクライアントとサーバーをつなぐ Web サービスを実行することに落ち着きました。

私たちのビジネスロジックにどのサーバー技術を使用するかということに関しては、袋小路に入りました。 大きな論点は EJB3 と Spring の間で、私たちの最大の懸念はスケーラビリティとパフォーマンス、およびコード ベースの保守性です。

以下は私の質問です。

  1. EJB3とSpringの比較では、どのような論点がありますか?
    • それぞれどのような落とし穴が予想されますか?
    • 良いベンチマーク情報はどこで見つけることができますか。

どのように解決するのですか?

EJB3とSpringは性能的には大差はないでしょう。私たちは以下の理由でSpringを選択しました(質問には書かれていません)。

  • Springは、ユニットテストをより容易にサポートする方向でアーキテクチャを駆動します。たとえば、ビジネス レイヤーをユニット テストするためにモック DAO オブジェクトを注入したり、サーブレットをユニット テストするために Spring の MockHttpRequest オブジェクトを利用したりします。私たちはユニットテスト用に別のSpringの設定を維持し、テストを特定のレイヤーに分離することができるようにしています。
  • オーバーライドドライバは互換性がありました。複数の App Server をサポートする必要がある場合 (または、最終的に JBoss から Glassfish などに移行するオプションが必要な場合)、EJB3 仕様の異なる実装間の互換性に頼るのではなく、本質的にコンテナ (Spring) を一緒に持ち歩くことになります。
  • Springは、Persistenceやオブジェクトリモーティングなどの技術選択が可能です。例えば、Flexのフロントエンドも使用しており、FlexとSpringの間の通信にHessianプロトコルを使用しています。