568

Apache HTTPサーバーとApache Tomcatの機能面での違いは何ですか?

TomcatはJavaで書かれており、HTTPサーバーはCで書かれていることを私は知っていますが、それ以外は、それらがどのように区別されるのかを私は知りません。それらは異なる機能を持っていますか?


  • 私は私のブログにサマリーを追加しました、おそらくそれは誰かに役立つ:tugay.biz/2014/11/what-is-tomcat-is-it-web-server-what.html - Koray Tugay
  • 私は、OPが何を求めているのか正確に疑問に思っていました、そして、なぜそれが閉じられたのかわかりません。幸いなことに答えがあります。 - Florian F
  • Apache WebサーバーとApache Tomcatは異なる目的のために調整された2つの異なるツールです。事実と専門知識によってそれらのユースケースを区別できなくなった場合、申し訳ありません。 "引数"を閉じるためのこの動機質問は行き過ぎました。おそらく、モデレータはより多くの情報を得て、それほど意欲的でない必要があります。 @FlorianFが言うように、少なくとも今答えがあります。 - Anil G

8 답변


414

Apache Tomcatは、JavaサーブレットとJSPのデプロイに使用されます。そのため、あなたのJavaプロジェクトでWAR(Web ARchiveの略)ファイルを構築し、それをTomcatのdeployディレクトリにドロップするだけです。

したがって、基本的にApacheはHTTPを提供するHTTPサーバーです。 Tomcatは、Javaテクノロジを提供するサーブレットおよびJSPサーバーです。

Tomcatはサーブレットコンテナです。最後に、サーブレットはJavaクラスです。 JSPファイル(これはPHPに類似しており、より古いASPファイル)はJavaコード(HttpServlet)に生成され、それがサーバーによって.classファイルにコンパイルされてJava仮想マシンによって実行されます。


  • " ApacheはHTTPにサービスを提供していますか? Tomcatも(ハイパーテキスト別名)HTTPを提供していませんか。 Tomcatを単に「mod_java」にすることはできません。 Apacheモジュール?説明できる? - Peterino
  • Tomcatはサーブレットコンテナです。最後に、サーブレットはJavaクラスです。 JSPファイル(これはPHPやASPファイルと似ています)はJavaコード(HttpServlet)に生成され、それはサーバーによって.classファイルにコンパイルされてJava仮想マシンによって実行されます。 - それとは別に、このフォーラムではApache HTTPDとTomcatの違いをよく説明しています。coderanch.com/t/85182/Tomcat/… - Peterino
  • Tomcatは確かにそれと一緒に有能なWebサーバーをもたらします。 Tomcatはサーブレット/ JSPコンテナですそしてWebサーバーも提供しています。 Tomcatのウェブサーバーは非常に優れており、中小規模のウェブサイトのほとんどのニーズに対応できます。 Java NIOと64ビットメモリのサポートにより、大規模Webサイトの中にはTomcatのCatalinaモジュールによってうまく機能するものもあります。さまざまな理由から、一部の人々はCatalinaを無視し、代わりにApacheの背後でTomcatのサーブレット機能を使用することを選択します。httpdWebサーバー製品。 - Basil Bourque
  • 私のコメントの訂正:CoyoteはTomcatのWebサービスを担当するモジュールです。 Catalinaはサーブレットを実行するモジュールです。 JasperはJSPを処理するモジュールです。 - Basil Bourque
  • @KorayTugayはい。Tomcat = ( Web Server + Servlet container + JSP environment )。 Tomcatを実行すると、Webサーバーはデフォルトでオンになります。startup.sh着信接続(HTTP呼び出し)をポート8080でlistenしているスクリプト。 Tomcatは純粋なJavaであり、独自のWebサーバー実装(Coyote)を備えています。のApache HTTPサーバー対照的に、(AHS)は、ネイティブC / C ++コードを使用して、Webサーバーの完全に独立した実装を持っています。 AHSは非常に柔軟で強力ですが、やり過ぎることがよくあります。 Tomcat自身のウェブサーバーは非常にうまく機能します。本当に必要な場合にのみAHSを使用してください。 - Basil Bourque

99

上記の良い答えに加えて、Tomcatには独自のHTTPサーバーが組み込まれており、静的コンテンツの提供においても完全に機能すると言えると思います。 Java仮想マシンの設定によっては、mod_proxyやmod_jkなど、Apacheの従来のコネクタを通過するよりも実際には性能が優れている場合があります。

つまり、完全に最適化されたTomcatサーバーは静的ファイルを高速に提供する必要があり、静的コンテンツに加えてJavaサーブレット、JSP、およびColdFusionファイルがある場合、tomcatはそれ自体が優れた仕事をすることがわかります。


  • そうです。そして多くの人々はまだ彼らのTomcat以外に追加のApacheセットアップを使用しています..これはほとんどの場合不要です。 - Marco Schoolenberg
  • 他のいくつかのサーバーがサポートしているapache httpの最も強力な部分は、アプリケーションがそれを見る必要がある前に、そのリクエストを再ルーティングして書き換える機能です。mod_rewriteエンジンと条件付き環境インジェクション。mod_proxy基本的な負荷分散を提供します(そしてmod_jkと組み合わせて、負荷分散されたTomcatインスタンス間で基本的なスティッキーセッション/共有状態を提供します)。 - cowbert

67

  1. Apacheは、Tomcatがサポートしていない多くの高度なオプションをサポートする汎用のhttpサーバーです。
  2. Tomcatは汎用のhttpサーバーとして使用できますが、Apacheと組み合わせて静的コンテンツを処理し、動的コンテンツに対する要求をTomcatに転送するようにApacheとTomcatを設定することもできます。


  • 最後にすべてのウェブが固定されているわけではありませんか。私の理解するところでは、Tomcatは "a"を生成します。静的コンテンツ(動的)ならApacheはこれを提供します。そのため、Tomcatは動的コンテンツなど実際には何も提供しません。必要なときにのみ生成されます。 - Koray Tugay
  • @KorayTugayあなたはあなたの用語を混同しています。 "必要に応じて生成" "動的"という意味で、「静的」とは正反対です。 Apache HTTPサーバーの主な目的は静的コンテンツを提供することですが、サーブレットテクノロジの主な目的はその場でコンテンツを生成すること(動的コンテンツ)です。 - Basil Bourque
  • @BasilBourque私はTomcatが実際にコンテンツをここで提供しているのと混同しました。コンテンツを生成するだけで、Apache Http Serverと一緒に使用した場合は提供されません。たぶんあなたは正しいです、そして私は混乱していますが、一緒に使われると、Tomcatは必要に応じて静的コンテンツを生成します。 Apacheが使用されていない場合は、TomcatのCoyoteがサービングを行い、CatalinaとJesperが動的コンテンツを生成します。 - Koray Tugay
  • @KorayTugayはい、あなたの最後のコメントは正しいです。 Apache HTTP Server + Tomcatを使用している場合、ウェブブラウザは" see"のみです。 Tomcatがカーテンの裏側で作業していることはわかりません。 AWSは、WebブラウザクライアントとTomcatの仲介者です。 Tomcatを単独で使用する場合は、TomcatのCoyoteモジュールがAWSの代わりにWebブラウザクライアントからのリクエストをフィールド処理します。あなたがAWSによってよりよく対処されるであろう非常に特別なニーズがあることをあなたが知らない限り私は後者(Tomcatだけ)をお勧めします。 - Basil Bourque

24

Tomcatは主にアプリケーションサーバーであり、サーバー上のカスタムビルドされたJavaサーブレットまたはJSPファイルへの要求を処理します。通常、Apache HTTPサーバーと組み合わせて使用されます(少なくとも私の経験では)。手動で着信要求を処理するためにそれを使用してください。

HTTPサーバーは、それ自体で、静的コンテンツ、HTMLファイル、画像などを提供するのに最適です。


  • 私は疑うTomcat is primarily an application serverステートメント。 - Rachel
  • tomcatは主に意味したアプリケーションサーバーになります。それでもするサーバーの静的コンテンツも同様です。 - Scalable
  • はいTomcatは、サーブレットコンテナがWebブラウザに配信される動的コンテンツを生成するという意味で使用されている場合、実際には主にアプリケーションサーバーです。最初のサーブレットコンテナの1つとして、それがTomcatの存在理由です。 - Basil Bourque
  • tomcatはアプリケーションサーバーではなく、Webサーバーです。javajee.com/web-server-web-container-and-application-server - Prateek Mishra
  • @PrateekMishraあなたが提供したリンクに基づいて、tomcatはWebサーバー間違っている;それは(主に)Webコンテナ、としても知られていますサーブレットコンテナ。 - skomisa

17

Apacheサーバーは、単純なhttpリクエストを処理できるhttpサーバーです。ここで、tomcatサーバーは、実際には、javaサーブレット要求を処理できるサーブレットコンテナです。

Webサーバ[apache]はWebクライアント(Webブラウザ)の要求を処理してサーブレットコンテナ[tomcat]に転送し、コンテナ処理は要求を処理してWebサーバによって転送された応答をWebクライアント[ブラウザ]に送信します。

また、より明確にするためにこのリンクをチェックすることができます -

https://sites.google.com/site/sureshdevang/servlet-architecture

また、さらなる調査のためにこの答えをチェックしてください: -

https://softwareengineering.stackexchange.com/a/221092


12

Webアプリケーションの作成にJavaテクノロジ(サーブレット/ JSP)を使用している場合は、おそらくApache Tomcatを使用します。 ただし、Perl、PHP、またはrubyなどの他のテクノロジを使用している場合は、Apache HTTP Serverを使用するほうが簡単です。


  • この答えは私には意味がありません。 Tomcat以外にも、Jetty、JBoss / Wildfly、Glassfish、WebSphereなど、非常に人気のあるServlet / JSPコンテナが他にもたくさんあるという点で最初の文は間違っています。普及している間、Tomcatは支配的ではなく、少数の市場シェアしかありません。 2番目の文については、TomcatはApache HTTP Serverの背後にあるサーブレットコンテナとしてよく使用されています。そしてPHPなどは他のいくつかのWebサーバーでよく使われますNginx、Lighttpdなどがあります。 - Basil Bourque

3

ApacheはHTTP Webサーバーです。TomcatはサーブレットとJSPのWebサーバーでもあります。 さらに、ApacheはApache Tomcatよりもリアルタイムで好まれています。


  • この質問はかなり古く、あなたの答えはずっと前に投稿されたものと重複しているようです。答えは高く評価されていますが、新しい答えは会話に追加するのに役立ちます。 - GargantuChet

-1

ApacheはHTTPとして機能するHTTP Webサーバですが、Apache TomcatはJavaサーブレットコンテナです。IT機能JavaサーブレットおよびJSPページを実行するようにカスタマイズされたWebサーバと同じです。


  • この答えは少し混乱します - mac
  • @ Basil Bourqueが上で述べたように、はい答えは少し混乱します" CoyoteはTomcatのWebサービスを担当するモジュールで、Catalinaはサーブレットを実行するモジュールです。 JasperはJSPを処理するモジュールです。 " TOMCAT機能Webサーバーと同じように、JavaサーブレットとJSPページを実行するようにカスタマイズされた方法が明確になりました。 " - Dev

リンクされた質問


関連する質問

最近の質問