2012-03-20 14 views
13

私はバックエンドがApache httpd/Tomcatコンボによって強化されたJava Webアプリケーションを含むプロジェクトを継承しています。 Webサーバーは、JS、静的コンテンツの復旧、および一般的なロード・バランシングの実行に使用されています。Tomcatは、単一のWARファイルを使用してJSPを処理しています。ApacheのhttpdとTomcatはどのように連携しますか?

私は、今日または明日の後半にコードベースへのアクセスを受け取りますが、事前にいくつかの研究を試してみたかったのです。

私の質問は次のようにまとめることができます:これらの2つはどのように連携しますか?

  • 最初にHTTPリクエストを受信するのは誰ですか?
  • JSPリクエストをTomcatに転送するタイミング、またはリクエスト自体に応答するタイミングをhttpdはどのように知っていますか?
  • httpdはどのように要求を "渡し"、 "応答"するのですか? Tomcatがリッスンしているポートにリクエスト/レスポンスを "コピー&ペースト"するだけですか?ある種のOSレベルのプロセス間通信が行われていますか?その他

これは、テクノロジの相互作用に関する一般的な質問です。前もって感謝します!

+0

私は以下にいくつかの回答を掲載しましたが、あなたが実際に見ているものを見るまでは、あまりにも時間を費やすことはありません。おそらく最も良いことは、逆プロキシなどの一般的な原則(その答えの中のリンク)を読み上げることです。 –

答えて

18

初めてHTTPリクエストを受信するのは誰ですか?

Apache、ほぼ確実です。しかし、Tomcatに直接話す管理プロセスがあるかもしれません。

JSPリクエストをTomcatに転送するタイミング、またはリクエスト自体に応答するタイミングは、httpdではどのように知っていますか?

から構成されています。詳細は異なります。例えば、例えば、あなたが設定ファイルでJkMountディレクティブを見つけることができます。その場合にはmod_jkまたはmod_jk2を、使用している場合があります。

JkMount /*.jsp ajp13_worker 

...のルートにリクエストを渡すためにそれを伝えていますworkers.propertiesファイルに定義されているとajp13_workerのファイルが含まれています。

また、簡単なHTTP reverse-proxyの設定で設定することもできます。または、他の何か。

httpdはどのようにリクエストを「パス」して、Tomcatからの応答を受け取っていますか?

これは構成によって異なります。それはHTTPでもよいし、AJPでもいいし、他のモジュールを使っているかもしれない。

Tomcatがリッスンしているポートにリクエスト/レスポンスをコピーアンドペーストするだけですか?

:-)上の逆プロキシリンクを参照してください。

OSレベルのプロセス間通信には何らかの種類がありますか?

はい。 AFAIKは、ソケットベースのもので、共有メモリのものではなく、TomcatとApacheが同じマシン上で動作している必要はありません。

+0

動的コンテンツのHTTP要求がApacheにヒットしたとします。 Apacheは新しいスレッドを生成し、スレッドはそれをTomcatに渡し、その後、そのスレッドを強制終了します(またはプールに戻します)。 HTTPリクエストを受信すると、Tomcatは新しいスレッドを生成してリクエストを処理します。次に、TomcatからApacheに、クライアントに応答が流れます。本当? –

関連する問題