web-dev-qa-db-ja.com

アプリケーションサーバーとサーブレットコンテナの違いは?

本格的なアプリケーションサーバー(Weblogic、JBossなど)とサーブレットコンテナー(Tomcat、Jettyなど)の違いを理解しようとしています。

それらはどのように異なり、どのタイミングを使用するのですか?

おかげで、

109
Pushkar

サーブレットコンテナは、サーブレットAPI(JSP、JSTLを含む)のみをサポートします。

アプリケーションサーバーは、EJB、JMS、CDI、JTA、サーブレットAPI(JSP、JSTLを含む)など、JavaEE全体をサポートします。

ほとんどのJavaEEテクノロジはサーブレットコンテナで実行できますが、特定のテクノロジのスタンドアロン実装をインストールする必要があります。

167
Bozho

大まかに言って、サーブレットコンテナは、J2EEサーブレット仕様の実装に多少なりとも制限されます。また、追加のツールを提供することではなく、ランタイム環境に焦点を合わせています。

対照的に、本格的なアプリケーションサーバーはJ2EEスタック全体を実装します。さらに、すべてのエンタープライズツールと統合の可能性が備わっています。通常、アプリケーションサーバーには高度な管理インターフェイスがあり、クラスタリングや、主にハイエンドシステム開発で使用されるその他の機能をサポートしています。

初心者にとっては、単純なサーブレットコンテナにとどまるほうがおそらくよいでしょう。学習曲線はそれほど急ではないからです。


編集

@Apache Fan:既存のシステムや将来の計画など、状況の詳細に依存します。ここでは、一般的なフローチャートのアプローチは適用できないと思います。

プラットフォームの選択は、通常、検討中のシステムの直接的な知識に対して特定の要件を比較検討することによって行われます。

ただし、この質問には、評価基準が何であるかについての手がかりはありません。オープンソースにするべきですか? 24時間体制のベンダーサポートが必要ですか?システムはどのようなエンタープライズ環境と統合する必要がありますか?ライセンス料は問題ですか?必要なテクノロジーやツールはありますか?等。

上記を知らなくても、ほとんど暗闇での撮影です。

14
Saul

基本的にアプリケーションサーバー in Java EEコンテキストはサーバーにインストールされたソフトウェアであり、1つのJava EE仕様(Java EEたとえば、このようなソフトウェア(アプリケーションサーバー)は、Java EEアプリケーションを実行できる必要があります。

Java EEは4つのドメイン、いわゆるcontainersを定義します:

  • アプレットコンテナ、
  • アプリケーションクライアントコンテナ、
  • Webコンテナ、および
  • EJBコンテナー。

2つのコンテナはアプリケーションサーバーの一部(EJBとWebコンテナ)であり、他の2つのコンテナはクライアントコンピュータの一部です。

JBossとWeblogicはアプリケーションサーバーであり、TomcatとJettyはWebコンテナーです。そのため、JBossとWeblogicはWebコンテナよりも多くのテクノロジーを扱うことができます。アプリケーションサーバーはEJBを管理できます。

サーブレットコンテナは、制限の厳しいTomcatおよびJettyにとって適切な式ではありません。 Tomcatは、サーブレットだけでなく、JSPとJSFも実行できます。

9
nanachimi

afaik、websphere、およびjbossは完全に準拠したj2eeサーバーであり、EJBなどのサーブレットを超えて実行できますが、Tomcatは単なるサーブレットコンテナーであり、EJBを実行することはできません。

2
asgs

Laymanの用語では:Webサーバーの意味: HTTP要求の処理(通常はブラウザーから)。

サーブレットコンテナ(Tomcatなど)の意味:サーブレットとJSPを処理できます。

アプリケーションサーバー(GlassFishなど)の意味: *管理できるJava EEアプリケーション(通常はサーブレット/ JSPとEJBの両方)。

初心者にとっては、おそらく単純なサーブレットコンテナを使用することをお勧めします。

1
Crroods