2009-11-30 7 views
6

私は最近Springについてもっと読んだり、TomcatやHibernateのような他のオープンソースツールと組み合わせてSpringを使う方法を学んでいます。私は、Spring MVCが、私が取り組んでいるプロジェクトの代替技術である可能性があるかどうかを評価しています。これは、WebLogicと多くのカスタムロールドJava EEコードを使用しています。問題は、私たちの解決策が過度に設計されており、必要以上に複雑であると常に疑ってきたことです。驚いたことに、2009年ですが、独自のトランザクション処理クラスとスレッドプールクラスを作成しています。私が意味することを知っているなら、私たちはAmazon、eBay、Googleのようなものではありません。したがって、私は "よりシンプルで良い"オプションを検討しています。Spring + Tomcatはいつ強力ですか?

ここに私の質問があります。Java EEアプリケーションサーバーが必要であるかどうかをどうやって判断するかについての意見を聞きたいと思います。 Java EEアプリケーションのサイズ/負荷/需要をどのように「測定」しますか?同時ユーザー数?総取引額は?あなたが手を放り投げて "OK、Tomcatだけでは切り詰めていない、JBoss/WebLogic/WebSphereが必要"と言う前に、アプリケーションがどれくらい重いのですか?

答えて

9

本格的なJava EEサーバーを使用するかどうかは、ユーザーまたはトランザクションの数に基づいて決定する必要はないと思います。むしろ、それが機能を必要とするかどうかに基づいている必要があります。

私の現在のプロジェクトでは、とにかく基本的なサーブレットを超えてJava EE機能を使用していないことがわかったので、JBossからバニラのTomcatに移行しています。しかし、私たちはSpringを使っています。 Springの基本的なオブジェクト管理、トランザクション処理、およびJDBC機能の間では、EJBに対する魅力的なニーズは見られません。私たちは現在SpringのMVCではなくStruts 2を使用していますが、私はそれについて素晴らしいことを聞いてきました。とにかく、Springは多くのJava Webフレームワークとうまく統合します。

+0

サーバーの読み込みではなく機能について心配する必要があるようです。それはたくさんの助けになります!私たちのアプリは実際にセッションBeansを使用していますが、おそらくMessagingのサポートとともに、完全なJ2EEコンテナを使用する正当な理由であることがわかりました。私たちが実際にそれらのことを必要とするかどうかは、別の日のための思考練習です。 – pbailey19

1

Googleのオープンソースでは、多くのコードが使用されています。既に書かれたコードを実装するのではなく、自分自身で低レベルのものを書く場合は、しばしばその問題を考え直すことになります。

実際の質問に戻って、Walmart.com、etrade.com、Weather Channelとquite a few othersはTomcatを使用しています。 IBMのマーケティング担当者と営業担当者は、おそらく異なると思われるでしょうが、Tomcatには上限がありません。

EJBを除いて、私はTomcatが何が欠けているのか分かりません。私はEJBのファンではありません。

4

SpringはJMSやJTAなど、JavaEE仕様の高度な部分を置き換えようとしません。代わりに、それらをベースにして、「春の道」と一貫性を持たせ、一般的に使いやすくします。

アプリケーションでJMSやJTAのような機能が必要な場合は、Spring経由で簡単に使用できます。それは問題ではありません。

+2

アクティブMQのようなサードパーティのJMSプロバイダを使用して、TomcatでJMSを使用することはできます。しかし、私が(2年ほど前に)チェックした最後の時間に、オープンソースによるTomcatのJTAサポートは受け入れられませんでした。 2つのフェーズ・コミットが必要な場合は、間違いなく完全なJ2EEサーバーが必要になります。 –

+0

しかし、JTAベースのトランザクションマネージャを統合/サポートするにはTomcatが必要ですか?コンテナの統合を気にせずに、SpringアプリケーションでAtomikosやJBoss TMのようなものを使うだけではいけませんか? – SteveD

1

Java EEのよりエキゾチックな要素とは別に、TomcatはセッションBean(別名EJB)を提供していません。セッションBeanを使用すると、処理を効率的に分離できます。したがって、フロントエンド用に1つのボックス、セッションBean(ビジネスロジック)用に1つ、データベース用に1つのボックスを持つことができます。あなたは、少なくとも2つの理由のためにこれをしたいと思う

  1. パフォーマンス。すべてを処理する1つのボックスが、あまりにも多くのボックスをロードしていることがわかります。異なるレイヤーを別々のボックスに分けると、スケールアウトすることができます。セッションBeanは、より細分化されたレベルで負荷分散を行うこともできます。 Tomcatとそのilkの他のWebサービスは、すぐにクラスタリングされません。
  2. 柔軟性;ビジネスロジックを独自の環境に移行したので、同じレイヤーを使った別のフロントエンドを開発することもできましたが、たとえば、クライアントのフロントエンドがシックです。あるいは、他のコンテキストがセッションBeanを利用したいかもしれません。

ウェブサービスを使用してその中間層と通信すると、tomcatにもある可能性があります。

1

あなたは、分散XAトランザクションを必要とする場合は、必要がない場合は本格的なJava EEサーバーを使用する唯一の理由は、ありますXAトランザクションでは、Spring + JPA + Tomcat + Bean検証+ JSTL + EL + JSP + Java Mailを使用できます。

また、Java EEサーバはJMSを実装する予定ですが、他のアプリケーションサーバと同じVM内でJMSサーバを実行するのは意味がありません。したがって、JMSが必要な場合は別個のJMSサーバが必要です。

1

ここに挙げたすべての回答に強く反対します。すべてはEJB、CDI、JTA、ビーン検証、JAX-RSを含む、Tomcatに追加することができます

など

質問です:あなたはこれをしたいですか?適切なバージョンのすべての依存関係をアセンブルし、他の人がすでにこれを行っているときに、すべてが一緒に動作することをテストしますか?

誰もTomcatだけを使用しています。誰もが常にWebフレームワーク、iocコンテナ、orm、トランザクションマネージャー、Webサービスなどを追加します。

TomEEのような軽量なJava EEサーバーには、すでにすべてのものが組み込まれています。良くなったね。

関連する問題