@(ソケット要求をパッケージ化する方法の説明)
私たちは、ソースコードを見ることはできませんが、すぐに自分のレベルを向上させます。しかし、あなたのプログラミングをよりよく理解します。
私たちは、リクエストフォームを処理するために、マルチtomcatのNIOなので、このシリーズは、要求の治療関連のコンポーネントNIOタイプを語っているので。
プロセスを説明する前に、概念を理解することは重要です。
参加者
コネクタでのTomcatは要求を処理する責任があります。
プロトコル処理ProtocolHandler
リクエストを処理するProtocolHandlerプロセッサを使用してコネクタ。異なるProtocolHandlerは異なる接続タイプを表します。
プロセッサはProtocolHandler考慮することができるプロトコル処理コーディネーター要求された処理は、他の作業管理コンポーネントによって達成されます。ProtocolHandlerには、3つの重要なコンポーネントが含まれています。
エンドポイント:受信、処理ネットワークソケット接続の責任
プロセッサ:エンドポイントのプロトコルタイプにカプセル化ソケット接続要求から受信するための責任を負います
アダプタは:カプセル化されたコンテナの要求を処理するために責任があります。
ソケットパッケージ
NioChannel:たSocketChannel基礎ラッパークラスでEndPonitを使用しています。
SocketWrapper:(NioChannel)ソケット配信を実施するためのソケットラッパークラス。
違い:NioChannelは基本パッケージで、SocketWrapperはさらにNioChannelをパッケージ化。
複数のバッファ
- ソケットの入力がInputStreamをストリーミング:JDKパッケージに属するioの。オペレーティング・システムは、基礎となるチャネルのソケットからバイトを読み出すとして
- SokcetBufferすなわちのByteBuffer。java.nioのパッケージ、NIOレベルのバッファの下に位置します。Tomcatのデフォルトあなたは、このようなサイズ8Kである* 1024年8バッファーを作成するとき
- 入力バッファインターフェイス(内部バッファ):コヨーテパケットの下では、内部バッファのためのTomcatのリクエスト。ソケット入力バッファ、すなわちソケットから読み出され、バッファ・バイト・ストリーム・モードを提供する、ことを意味します。分析ヘッドとエスケープを提供するための要求と実装クラスHttp11InputBuffer、:ソースコードを見て、私は彼がツールインタフェース、ツールバーなどの賛成で、よりバイアスされている感じ。
- 入力バッファカテゴリ:クラッドの下のコネクタ。内部バッファの要求サーブレット仕様
- MessageBytesメッセージはバイト:Tomcatのソケットの着信バイトを受信し、すぐにトランスコードではないが、使用場所を変えるその後、バイト[]配列を維持し、後。これは、バイト[]抽象化をMessageBytes
- 営業ツールのサブブロックセクションはByteChunk:まず、彼はツール、ツールのバッファ動作です。ByteInputChannel ByteOutputChannelとデータを書き込む:第二に、二つの内部のインターフェイスがあります。便利なターゲットChartsetコーディングもあります。そこで彼は、コーディング機能、キャッシュツールの操作をされています。
リクエスト、レスポンスの二組
二組の要求、中respone Tomcatがあります。
- :org.apache.coyoteパケットの下で
定義された内部Tomcatのオープン要求に属し、最終型クラスは、開発を行います。主な機能は、ヘッダコンテンツパッケージソケットHTTPプロトコルを解決することです。 - :org.apache.catalina.connectorパケットの下で
、サーブレットの実装仕様に属します。我々はまた、共通の要求オブジェクトを開発しました。
だから、Tomcatプロセスが存在します変換要求と要求が含まれ、これらのプロセスはフォロー話すを入れて、この記事では、アセンブリの概念を説明します。
Tomcatは、ネットワークI / Oのを処理するためのApacheコヨーテライブラリを使用しています。マルチSerlvetパッケージ仕様のコネクタです。
複数のプロセッサ
名前のTomcatは、内部プロセッサがたくさんあります。ここでの違いについての話について話をいくつかに言及:
- ProtocolHandlerプロセッサ:協調や管理レベルのプロセッサ。に対処するProtocolHandlerに処理作業を要求するコネクタ。残りはProtocolHandler協調です。これは彼が管理プロセッサ部門であることを示しています
ConnectionHandler:再利用SocketProcessor行うためにプロセッサProtocolHandlerの仕事を作成するためにマップするためのプロセッサ、内部のメンテナンスのプロセッサを接続して...
SocketProcessorプロセッサはConnectionHandler.process()着信要求コンテンツソケットProcessor.process()処理を呼び出します。
このように接続する役割を持つConnectionHandler。- SocketBufferHandler:socketBufferプロセッサ。これは、バッファリングのために読んで、ソケットを書き込み、2 SocketBufferを備えます。
- SocketProcessor:ソケットプロセッサソケットプロセッサ。自身が労働者、プロセッサへのソケット処理内容であります
(プロセッサ)Http11Processor:HTTPプロトコル1.1は、HTTPプロトコルの最新バージョンです。それ以来、プロセッサの名前は、我々はまた、彼は、この協定の治療を受けていることがわかります。この処理要求にソケットの主要な構成要素である、彼はソケットからHTTPプロトコルの内容を解析しますが、Tomcatのでは、彼は、HTTPリクエストラインのための唯一の原因である、ヘッダを解決することを要求する。サーブレットの本体を遅らせる解決要求解決します。Http11Processor ConnectionHandlerによって作成され、Tomcatの主要なクラスが頻繁に創造と破壊のオーバーヘッドを減らすために再利用を実装し、recycledProcessorsに飛び出します
概要
コンポーネントの後に関連するこれらの概念を習得。章の下でソケット要求になる方法について説明します。