Tomcat Server.xml詳細
10648 ワード
原文住所:http://www.blogjava.net/baoyaer/articles/107278.html
Tomcat Serverの構造図
このファイルには、Tomcat Serverを起動する方法が記載されています.
要素名
ツールバーの
説明する
server
port
tomcatを閉じるリクエストの傍受を担当するポートを指定します.
shutdown
ポートに送信するコマンド文字列の指定
service
name
サービス名の指定
Connector(クライアントとサービス間の接続を示す)
port
サーバ側で作成するポート番号を指定し、クライアントからのリクエストをこのブレークポイントで傍受します.
minProcessors
サーバ起動時に作成された処理要求のスレッド数
maxProcessors
作成可能な処理要求の最大スレッド数
enableLookups
trueの場合、requestを呼び出すことができます.getRemoteHost()はDNSクエリーを行い、リモートクライアントの実際のホスト名を取得し、falseであればDNSクエリーではなくipアドレスを返す
redirectPort
サーバがhttpリクエストを処理中にSSL転送リクエストを受信したときにリダイレクトするポート番号を指定します.
acceptCount
使用可能なすべての処理要求のスレッド数が使用される場合、処理キューに格納できる要求数を指定します.この数を超える要求は処理されません.
connectionTimeout
タイムアウト時間の指定(ミリ秒単位)
Engine(サービス内のリクエストプロセッサを指定し、Connectorからのリクエストを受信および処理することを示す)
defaultHost
デフォルトの処理要求のホスト名を指定します.少なくとも1つのhost要素のname属性値と同じです.
Context(Webアプリケーションを表し、通常はWARファイルであり、WARに関する具体的な情報はservlet仕様を参照)
docBase
アプリケーションのパスまたはWARファイルが格納されているパス
path
このWebアプリケーションを表すurlの接頭辞.要求されたurlはhttp://localhost:8080/path/****
reloadable
このプロパティは非常に重要です.trueの場合、tomcatはアプリケーションの/WEB-INF/libと/WEB-INF/classesディレクトリの変化を自動的に検出し、新しいアプリケーションを自動的にロードします.tomcatを再起動せずにアプリケーションを変更できます.
ホスト(仮想ホストを表す)
name
ホスト名の指定
appBase
アプリケーションの基本ディレクトリ(アプリケーションを格納するディレクトリ)
unpackWARs
trueの場合、tomcatは自動的にWARファイルを解凍します.そうしないと、解凍せずにWARファイルから直接アプリケーションを実行します.
Logger(ログ、デバッグ、エラー情報を表す)
className
loggerが使用するクラス名を指定します.これはorgを実装する必要があります.apache.catalina.Loggerインタフェース
prefix
logファイルの接頭辞を指定する
suffix
logファイルの接尾辞を指定する
timestamp
trueの場合、logファイル名に時間を追加します.たとえばlocalhost_log.001-10-04.txt
Realm(ユーザー名、パスワード、roleを格納するデータベースを示す)
className
Realmが使用するクラス名を指定します.これはorgを実装する必要があります.apache.catalina.Realmインタフェース
Valve(機能はLoggerとあまり差がなく、prefixとsuffixの属性解釈はLoggerと同じ)
className
Valveで使用するクラス名(orgなど)を指定します.apache.catalina.valves.AccessLogValveクラスはアプリケーションのアクセス情報を記録することができる
directory
logファイルの保存場所の指定
pattern
2つの値があり、common方式でリモートホスト名またはipアドレス、ユーザー名、日付、1行目の要求文字列、HTTP応答コード、送信バイト数を記録します.combined方式はcommon方式より記録された値が多い
要素はコンテナ全体を表し、Tomcatインスタンスの最上位の要素です.org.apache.catalina.サーバインタフェースを定義します.要素が含まれています.任意の要素のサブ要素として使用できません.
注:「Server」自体は「Container」ではありませんので、ここでは「Valves」や「Loggers」などのサブコンポーネントを定義できません.
ポート8005でクローズ命令を待つ「SHUTDOWN」文字列を受け入れるとサーバーをクローズし、C>
テスト:telnet localhost 8005入力:SHUTDOWN結果:tomcatを閉じる
1>className指定実装org.apache.catalina.Serverインタフェースのクラスデフォルトはorg.apache.catalina.core.StandardServer
2>portはTomcatがshutdownコマンドポートを傍受することを指定する.サーバの動作を終了するには、Tomcatサーバが存在するマシンでshutdownコマンドを発行する必要がある.この属性は必須である.
3>shutdownは、Tomcatサーバの実行を終了するときに、Tomcatサーバのshutdownリスニングポートに送る文字列を指定する.この属性は設定する必要があります
要素org.apache.catalina.Serviceインタフェース定義.1つの要素と、同じEngine要素を共有する1つ以上の要素が含まれます.
注意:1つの「Service」自体はコンテナではありません.そのため、このレベルでは「Valves」や「Loggers」などのサブコンポーネントを定義することはできません.�C>
Serviceはコネクタのセットであり、すべてのコネクタが受信した要求を処理するためにEngineを共有する.
最初のは、Tomcatサーバから直接受信ウェブクライアント要求をすべて処理する.2番目のは、Apahceサーバから転送するすべてのWebクライアント要求を処理する.
1>className指定実装org.apahce.catalina.Serviceインタフェースのクラスデフォルトはorg.apahce.catalina.core.StandardService 2>name定義Serviceの名前
<コネクタ>要素はコネクタインタフェースによって定義されます.要素は、お客様の要求を受信し、お客様に応答結果を返す役割を果たすお客様プログラムと実際に対話する成果物を表します.
最初のコネクタ要素は、8080ポートを介してHTTP要求を受信するHTTPコネクタを定義します.第2のコネクタ要素は、8009ポートを介して他のサーバから転送する要求を受信するJDコネクタを定義する.
要素サービス要素ごとにEngine要素は1つしかありません.同じのすべての要素で受信クライアント要求を処理する.org.apahce.catalina.Engineインタフェースの定義
1>className Engineインタフェースを実装するクラスを指定します.デフォルトはStandardEngineです.
2>defaultHostクライアントを処理するデフォルトホスト名を指定します.のサブエレメントでこのホストを定義する必要があります3>name定義Engineの名前
には、,,,の要素を含めることができます.
要素はHostインタフェースによって定義.1つのEngine要素は、複数の要素を含むことができる.各の要素は仮想ホストを定義する.1つ以上のWebアプリケーションが含む.
要素には、例えば、サブ要素、、、要素がContextインタフェースによって定義.最も頻繁に使用する要素です.各は、複数の要素を含むことができる.各ウェブアプリケーションには、対応する唯一のContextがウェブアプリケーション自体を表す.servletコンテナは最初のwebアプリケーションのために1つを作成します
Tomcat Serverがhttpリクエストを処理するプロセス
お客様からのリクエストを次のように仮定します.
http://localhost:8080/wsota/wsota_index.jsp
1)要求が自機ポート8080に送信され、そこで傍受されたCoyote HTTP/1.1 Connector獲得2)Connectorはその要求をその所在するサービスのEngineに渡して処理し、Engineからの応答を待つ3)Engine獲得要求localhost/wsota/wsota_index.jsp,マッチング所有するすべての仮想ホストHost 4)EngineはlocalhostというHostにマッチングする(マッチングができなくてもこのHost処理に要求を渡す,このHostはEngineのデフォルトホストとして定義されているため)localhost Host取得要求/wsota/wsota_index.jsp,所有するすべてのContext 6に一致)Hostは、パスが/wsotaのContextに一致する(一致しない場合は、その要求をパス名「」のContextに渡して処理する)7)path="/wsota"のContext取得要求/wsota_index.jspは、そのmapping tableの中で対応するservlet ContextがURL PATTERNに一致する*を探す.jspのservletは、Jspサーブレットクラス9)に対応してHttpサーブレットRequestオブジェクトとHttpサーブレットResponseオブジェクトを構築し、パラメータとしてJspサーブレットを呼び出すdoGetまたはdoPostメソッド10)Context実行完了後のHttpサーブレットResponseオブジェクトをHost 11に返す)Host HttpサーブレットResponseオブジェクトをEngine 12に返す)Engine HttpサーブレットResponseオブジェクトをConnector 13に返す)Connector HttpサーブレットResponseオブジェクトをクライアントbrowserに返す
Tomcat Serverの構造図
このファイルには、Tomcat Serverを起動する方法が記載されています.
<Server> <Listener /> <GlobaNamingResources> </GlobaNamingResources <Service> <Connector /> <Engine> <Logger /> <Realm /> <host> <Logger /> <Context /> </host> </Engine> </Service> </Server>
要素名
ツールバーの
説明する
server
port
tomcatを閉じるリクエストの傍受を担当するポートを指定します.
shutdown
ポートに送信するコマンド文字列の指定
service
name
サービス名の指定
Connector(クライアントとサービス間の接続を示す)
port
サーバ側で作成するポート番号を指定し、クライアントからのリクエストをこのブレークポイントで傍受します.
minProcessors
サーバ起動時に作成された処理要求のスレッド数
maxProcessors
作成可能な処理要求の最大スレッド数
enableLookups
trueの場合、requestを呼び出すことができます.getRemoteHost()はDNSクエリーを行い、リモートクライアントの実際のホスト名を取得し、falseであればDNSクエリーではなくipアドレスを返す
redirectPort
サーバがhttpリクエストを処理中にSSL転送リクエストを受信したときにリダイレクトするポート番号を指定します.
acceptCount
使用可能なすべての処理要求のスレッド数が使用される場合、処理キューに格納できる要求数を指定します.この数を超える要求は処理されません.
connectionTimeout
タイムアウト時間の指定(ミリ秒単位)
Engine(サービス内のリクエストプロセッサを指定し、Connectorからのリクエストを受信および処理することを示す)
defaultHost
デフォルトの処理要求のホスト名を指定します.少なくとも1つのhost要素のname属性値と同じです.
Context(Webアプリケーションを表し、通常はWARファイルであり、WARに関する具体的な情報はservlet仕様を参照)
docBase
アプリケーションのパスまたはWARファイルが格納されているパス
path
このWebアプリケーションを表すurlの接頭辞.要求されたurlはhttp://localhost:8080/path/****
reloadable
このプロパティは非常に重要です.trueの場合、tomcatはアプリケーションの/WEB-INF/libと/WEB-INF/classesディレクトリの変化を自動的に検出し、新しいアプリケーションを自動的にロードします.tomcatを再起動せずにアプリケーションを変更できます.
ホスト(仮想ホストを表す)
name
ホスト名の指定
appBase
アプリケーションの基本ディレクトリ(アプリケーションを格納するディレクトリ)
unpackWARs
trueの場合、tomcatは自動的にWARファイルを解凍します.そうしないと、解凍せずにWARファイルから直接アプリケーションを実行します.
Logger(ログ、デバッグ、エラー情報を表す)
className
loggerが使用するクラス名を指定します.これはorgを実装する必要があります.apache.catalina.Loggerインタフェース
prefix
logファイルの接頭辞を指定する
suffix
logファイルの接尾辞を指定する
timestamp
trueの場合、logファイル名に時間を追加します.たとえばlocalhost_log.001-10-04.txt
Realm(ユーザー名、パスワード、roleを格納するデータベースを示す)
className
Realmが使用するクラス名を指定します.これはorgを実装する必要があります.apache.catalina.Realmインタフェース
Valve(機能はLoggerとあまり差がなく、prefixとsuffixの属性解釈はLoggerと同じ)
className
Valveで使用するクラス名(orgなど)を指定します.apache.catalina.valves.AccessLogValveクラスはアプリケーションのアクセス情報を記録することができる
directory
logファイルの保存場所の指定
pattern
2つの値があり、common方式でリモートホスト名またはipアドレス、ユーザー名、日付、1行目の要求文字列、HTTP応答コード、送信バイト数を記録します.combined方式はcommon方式より記録された値が多い
注:「Server」自体は「Container」ではありませんので、ここでは「Valves」や「Loggers」などのサブコンポーネントを定義できません.
ポート8005でクローズ命令を待つ「SHUTDOWN」文字列を受け入れるとサーバーをクローズし、C>
テスト:telnet localhost 8005入力:SHUTDOWN結果:tomcatを閉じる
<Server port=”8005″ shutdown=”SHUTDOWN” debug=”0″>
1>className指定実装org.apache.catalina.Serverインタフェースのクラスデフォルトはorg.apache.catalina.core.StandardServer
2>portはTomcatがshutdownコマンドポートを傍受することを指定する.サーバの動作を終了するには、Tomcatサーバが存在するマシンでshutdownコマンドを発行する必要がある.この属性は必須である.
3>shutdownは、Tomcatサーバの実行を終了するときに、Tomcatサーバのshutdownリスニングポートに送る文字列を指定する.この属性は設定する必要があります
注意:1つの「Service」自体はコンテナではありません.そのため、このレベルでは「Valves」や「Loggers」などのサブコンポーネントを定義することはできません.�C>
Serviceはコネクタのセットであり、すべてのコネクタが受信した要求を処理するためにEngineを共有する.
1>className指定実装org.apahce.catalina.Serviceインタフェースのクラスデフォルトはorg.apahce.catalina.core.StandardService 2>name定義Serviceの名前
<コネクタ>要素はコネクタインタフェースによって定義されます.
<!�C “Connector”( ) 。 “Container”( ) 。
, SSL HTTP/1.1 8080。 , 8443 SSL HTTP/1.1 。 SSL ( Tomcat 5 SSL ): * JDK 1.3 1.3 , JSSE 1.0.2 , JAR “$JAVA_HOME/jre/lib/ext” 。 * “changeit” : %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows) $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (UNIX) 。
, web ,DNS 。 , , “enableLookups” “false” DNS 。 DNS ,request.getRemoteHost() IP 。 �C>
<!�C Coyote HTTP/1.1 Connector className : Connector org.apache.coyote.tomcat4.CoyoteConnector port : 8080 browser HTTP1.1 . 8080 80, http://localhost/ protocol: Http , HTTP/1.1 minSpareThreads: Connector 5 , maxSpareThread: , . 200 acceptCount : 75 , . 100 , Connection refused redirectport : https , 8443 enableLookups: true, , IP .WEB request.getRemoteHost . true connectionTimeout: . -1, �C>
<Connector port=”8080″ maxThread=”50″ minSpareThreads=”25″ maxSpareThread=”75″ enableLookups=”false” redirectPort=”8443″ acceptCount=”100″ debug=”0″ connectionTimeout=”20000″ disableUploadTimeout=”true” />
<Connection port=”8009″ enableLookups=”false” redirectPort=”8443″ debug=”0″ protocol=”AJP/1.3″ />
最初のコネクタ要素は、8080ポートを介してHTTP要求を受信するHTTPコネクタを定義します.第2のコネクタ要素は、8009ポートを介して他のサーバから転送する要求を受信するJDコネクタを定義する.
<!�C “Engine”( ) ( Catalina )。 Tomcat HTTP , 。�C><!�C Engine Connector Http , Host localhost �C><Engine name=”Catalina” defaultHost=”localhost” debug=”0″>
1>className Engineインタフェースを実装するクラスを指定します.デフォルトはStandardEngineです.
2>defaultHostクライアントを処理するデフォルトホスト名を指定します.
<!�C :XML Xerces 2.2 。 �C>
<!�C localhost appBase : , , <CATALINA_HOME> . , <CATALINA_HOME>/webapps. Context , Context autoDeploy: true, Tomcat , appBase , web , WEB unpackWARs: true, WEB WAR . false WAR alias: , deployOnStartup: true, Tomcat appBase Web . Web server.xml <Context> , Tomcat Context �C>
<Host name=”localhost” debug=”0″ appBase=”webapps” unpackWARs=”true” autoDeploy=”true”>
<!�C Context, Web App path : Context ”", Context Host Context docBase : Context webapps/mycontext/ reloadable: true, Tomcat WEB-INF/classes Web-INF/lib CLASS . class , Web useNaming: JNDI, true cookies Cookies Session, true �C>
<Context path=”" docBase=”mycontext” debug=”0″/>
Tomcat Serverがhttpリクエストを処理するプロセス
お客様からのリクエストを次のように仮定します.
http://localhost:8080/wsota/wsota_index.jsp
1)要求が自機ポート8080に送信され、そこで傍受されたCoyote HTTP/1.1 Connector獲得2)Connectorはその要求をその所在するサービスのEngineに渡して処理し、Engineからの応答を待つ3)Engine獲得要求localhost/wsota/wsota_index.jsp,マッチング所有するすべての仮想ホストHost 4)EngineはlocalhostというHostにマッチングする(マッチングができなくてもこのHost処理に要求を渡す,このHostはEngineのデフォルトホストとして定義されているため)localhost Host取得要求/wsota/wsota_index.jsp,所有するすべてのContext 6に一致)Hostは、パスが/wsotaのContextに一致する(一致しない場合は、その要求をパス名「」のContextに渡して処理する)7)path="/wsota"のContext取得要求/wsota_index.jspは、そのmapping tableの中で対応するservlet ContextがURL PATTERNに一致する*を探す.jspのservletは、Jspサーブレットクラス9)に対応してHttpサーブレットRequestオブジェクトとHttpサーブレットResponseオブジェクトを構築し、パラメータとしてJspサーブレットを呼び出すdoGetまたはdoPostメソッド10)Context実行完了後のHttpサーブレットResponseオブジェクトをHost 11に返す)Host HttpサーブレットResponseオブジェクトをEngine 12に返す)Engine HttpサーブレットResponseオブジェクトをConnector 13に返す)Connector HttpサーブレットResponseオブジェクトをクライアントbrowserに返す