software powers the internet tm
TRANSCRIPT
3
®
アジェンダ
• JServ概要• JServ管理• JServインストレーションとサンプル• Servletアプリケーションの登録と実行• JSPアプリケーションの登録と実行• Appendix -Ⅰ&Ⅱ
5
®
Java Servlet
Webサーバ
Servletエンジン
Servlet AP
Java実行環境ブラウザ
HTTPクライアントから利用するサーバサイドJAVAの実装
TM
Request
Response
HTTP
Java Servletは、HTTPプロトコルを介して処理を行なうためのサーバサイドJavaアプリケーションを実装するための技術です。
クライアントには標準のWebブラウザを利用します。Servletの実行は、サーバ側に実装されるServletエンジン(Servletコンテナ)によって行われます。
6
®
Oracle iAS : Java Servlet 対応
Oracle HTTP Server
mod_ssl
mod_jserv
mod_perl
mod_plsqlOracle8i JVM
CORBAEJBAJP
Apache JServ
(+JDK JVM)
デ ー タ ベ ー ス サ ー バ ーア プ リ ケ ー シ ョ ン サ ー バ ー
ブ ラ ウ ザ Oracle8i JVM
Oracle8i
Oracle8i PL/SQL
ストアドプロシジャ
RMIIIOP
Net8
RMIIIOPJDBC
クライアント
Oracle iAS 1.0.0 の構成
Oracle Internet Application Server 8i (以降、Oracle iAS)では、ServletエンジンをApache JServで提供しています。
Oracle iAS R1.0.2 以降ではOracle8i JVMにServletエンジンが追加されます。
7
®
Oracle HTTP Server
Apache JServ1.1は、Apache Web ServerにJavaServletアプリケーションの実行環境を提供します
Oracle HTTP Server 1.0.x
Apache JServ1.1Apache 1.3.x &
- mod_jservモジュール- ApacheJServ.jar
- JRE/JDK 1.1.8- JSDK2.0
Oracle iAS のWebリスナー部分である「Oracle HTTP Server」は ApacheWeb Server (以降、Apache)です。
Oracle iAS 1.0.x は、Apache 1.3.x と Apache JServ1.1 を提供します。
8
®
Apache JServ 1.1
・ Servletエンジン(Java Servlet API 2.0 準拠)・ Apache1.3.x、JDK1.1以降、JSDK2.0に対応
mod_jserv
Apache JServ
・ Apacheモジュール。HTTPクライアントからの 要求をApache JServ(JVM)にディスパッチします
①
②
以下の2つの要素から構成されます:
Apache内部に組み込まれて動作
Apacheとは独立したJVMプロセスとして動作
Apache JServ1.1 パッケージには、mod_jserv と Apache JServ と呼ばれる2つの構成要素からなります。
■ mod_jserv
■ Apache JServ
9
®
Apache JServ を用いた構成
Oracle HTTP Server (Apache)
mod_jserv
Servletエンジン Servletエンジン Servletエンジン
ノード1 ノード2
Apache JServ Apache JServ Apache JServ
AJP AJP AJP
Client
別ノード上でApache JServの稼動可能
Apache JServ1.1は(OASと同様に)Web Server部分とJVM部分を切り離したアーキテクチャを採用しています。これはWeb ServerとJVMが分離して稼動することによって、構成を単純化し、個々に独立して存在することができます。スライドのように JVMを複数ノードに配置し、負荷の分散を行なうことができます。
Apache JServ1.1はC言語で書かれたmod_jservと、Java言語で書かれたServletエンジンによって構成されています。これらの間はAJP(ApacheJServ プロトコル)と呼ばれる特殊なプロトコルを用いて通信しています。mod_jservは、ApacheとServletエンジンのつなぎをしています。
10
®
処理要求の過程
Servlet APmod_jserv
HTTPリクエスト
HTTPレスポンス
AJPリクエスト
AJPレスポンス
Servletリクエスト
Servletレスポンス
Client Apache JServ (JVM)Oracle HTTP Server
処理要求の過程で以下のようなプロトコルの変換が行われます
Servletを利用する要求が処理される流れは以下のようになります:
1.WWWブラウザからHTTPリクエストを発行
2.ApacheがHTTPリクエストを受け付け、mod_jservに引き渡す
3.mod_jservはAJPプロトコルによって、HTTPリクエストをApache JServ プロセスに引き渡す
4.Apache JServプロセスはServletアプリケーションを実行する
5.上記 1-3 の逆の手順でクライアントに応答を返す
11
®
接続モデルmod_jserv( Apache )
Apache JServ
① 1 : 1
② 1 : N ④ N : N
③ N : 1
mod_jserv と Apache JServプロセス はそれぞれ独立した関係にあります。
そのため、スライドの4つの構成が可能となります。
12
®
Apache JServ 1.1 の特徴&用語
– Apache JServ Protocol (AJP)
– Servlet リポジトリ
– Servlet ゾーン (論理的なServletの管理単位)
– ゾーン(Servlet)の自動リロード
– IPフィルタリング、MD5ハッシュによる認証
– ロギング
– ロードバランス
ここで、Oracle HTTP Server で提供される Apache JServ 1.1 を利用する上での基本機能と用語に関して整理します。
13
®
Apache JServ Protocol(AJP)
mod_jserv と Apache JServ間の通信プロトコル over TCP
TCP
AJP
Apache JServ 1.1 は AJPv1.2 (デフォルト)
※ AJPプロトコルの設定は以下の箇所で設定されています: - ApJServDefaultProtocol (mod_jserv側の設定) - wrapper.protocol (Apache JServ側の設定)
AJPv1.1 でも可能である。AJPv1.2 は 1.1 よりもパフォーマンス面での改良が 加えられています。 ( Apache JServ: History of Changes より )
mod_jserv と ApacheJServプロセス間で通信するために「AJP」と呼ばれる独自プロトコルを利用します。※ AJP は Apache JServ Protocol の略称です
Apache JServ1.1では AJPv1.2 がデフォルトで設定されています。AJPv1.1を利用することもできますが、AJPv1.2の利用が推奨されています。AJPv1.2ではAJPv1.1に比べてパフォーマンス面で改善されているようです(Apache JServの更新履歴: History of Changes の記載より)。
Note: 過去の Apache JServのバージョンとAJPバージョンの対応: - Apache JServ 0.9 までは AJPv1.0 を利用。 - Apache JServ 1.0 の時には AJPv1.1 となり、認証機能が追加された。 ( AJPv1.1 は AJPv2.1 と呼ばれていたようです。改名。) - Apache JServ 1.1 ではさらに改善され AJPv1.2 (デフォルト)。
14
®
Apache JServ へのアクセス制限
IPアドレスによるフィルタリング
MD5ハッシュによる認証
• 特定のIPアドレスのJServクライアント(mod_jserv)からのみ アクセスを許可します• security.allowedAddress パラメータ
• あらかじめJServクライアント/サーバ同士で Secret Key を 持ち合い、このキーを用いたハッシュ値の一致によって アクセスを許可します• security.secretKey パラメータ等
各Apache JServへのアクセスについて以下の2種類の
認証機能が利用できます
※ 認証実行によるパフォーマンス劣化の可能性があります
複数のmod_jservからのApache JServプロセス(JVM)に対するアクセスを制限する機能があります。これにより、特定の mod_jserv からのAJPリクエストのみを受け付けることになります。
Apache JServのエンジン・プロパティ・ファイル( jserv.properties ) に必要な
設定を加えることで以下の2つの認証が利用できます。
- IPアドレスベースでアクセスを制限する
- MD5ハッシュを利用した認証(通信が暗号化されるわけではありません)
15
®
Servlet リポジトリ
Servletの保管場所を「Servletリポジトリ」と呼びますServletリポジトリには以下を指定可能です
*.ZIP *.JAR
アーカイブファイル(JAR, ZIP)
or
②
ServletServlet
Servlet
Servletクラスファイルを置くディレクトリ①
Directory
Servletクラスの配置ディレクトリやアーカイブファイルを「Servletリポジトリ」と表現します。
16
®
「Servlet ゾーン」の概念
Servletゾーンのイメージ
*.ZIP
*.JARServlet
ServletServlet
*.JAR*.JAR
Servletリポジトリの集まり
「Servletゾーン」とは
• Servletリポジトリの集まりから構成されます• Servletゾーン毎にServlet初期パラメータの設定が可能です• Servletゾーン毎にクラスローダを持ちます
1つの閉じた空間(共有される領域)
Apache JServには「Servletゾーン」という概念が存在します。
Servletゾーンは、Apache JServ上で稼動するServletアプリケーションの環境設定を共有する論理単位です。Servletゾーン毎に複数のServletリポジトリを設定します。クラスローダーはServletゾーン単位で実行されます。
ServletゾーンはWWWブラウザやmod_jservから実行要求される仮想パスにマッピングされます。全てのServletインスタンスはServletゾーン単位で管理されます。
17
®
「Apache JServ」 と 「Servletゾーン」
Servletゾーン 「A」
Apache JServ プロセス(JVM)
Servletゾーン 「B」
jserv.properties設定ファイル
A.properties = /conf/zonea.properties
B.properties = /conf/zoneb.properties
• 1つのApache JServ上で複数のServletゾーンを追加可能• 各Servletゾーンが、Servletアプリケーションの実行単位
前述の説明をまとめると、
- Apache JServプロセスはServlet実行のためのJVM - ServletゾーンはServletアプリケーション管理の論理単位
となります。
各Servletゾーンはゾーン・プロパティ( i.e. zone.properties ) というゾーン固有の設定を行ないます。Apache JServプロセスに複数のServletゾーンを割り当てるために、ゾーン・プロパティのファイルをApache JServに設定ファイルに登録します。
18
®
Servletゾーンの自動リロード
ServletServlet
ServletDirectory
Servlet リポジトリ
自動リロードを行なうかどうかの設定が可能です
Servletリポジトリ内のクラスの自動リロード設定
zone.propertiesファイルの自動リロード設定
- autoreload.classes ( デフォルトは true )
- autoreload.file( デフォルトは true )
Apache JServ稼動中に変更した場合、自動リロードを行なうことができます
Apache JServには、Servletリポジトリの内容やServletゾーンの設定ファイルが変更された場合に自動リロードをするための機能があります。
自動リロードの動作はServletゾーン内のインスタンスを全て停止します。自動リロードのタイミングは更新後の最初のアクセス時です。
Servletリポジトリに関する自動リロードは、既に起動しているServletインスタ
ンスに関連するクラスをチェックしています。
※ Apache JServへのリクエストに対して毎回更新チェックを行なうため パフォーマンス面での影響があるかもしれません。
19
®
ログの種類
Oracle HTTP Server (Apache)
mod_jservAJP
Servlet AP
Apache JServ
• HTTPアクセスログ• エラーログ
mod_jservログ
ErrorLog (httpds.conf)TransferLog (httpds.conf)
ApJServLogFile (jserv.conf)Apache JServログ
log.file ( jserv.properties)
Apache本体のログとは別に mod_jserv と Apache JServ はログを出力します。Oracle HTTP Server の初期設定では、mod_jserv と Apache JServ のログ出力先が同一ファイルになっています。そのため、運用前にはログ出力先を別々に再設定すべきです。
20
®
Apache JServのログ
mod_jservログ
Apache JServログ
mod_jservモジュールの稼動状況のログ。出力レベルは8種類あります。 [ debug | info | notice | warn | error | crit | alert | emerg ]
Apache JServプロセスの稼動状況のログ。出力内容は“ log.channel “によってあらかじめ設定しておきます。log.channelには以下のようなものがあります: [ info | servletException | servletException | jservException | warning | servletLog | critical | debug ]
Servletアプリケーションからのログは“servletLog”として出力されます。
21
®
実行方法
http://<hostname>:<port>/<mount-point>/<class_name>
http://<hostname>:<port>/<mount-point>/<alias_name>
※ Apache JServではclass名に対してaliasを設定可能 Servlet alias については p.36 を参照※ <mount_point> については p.48 を参照
WWWブラウザからの実行方法は、基本的には仮想パス + Servletクラス名で指定します。また、Apache JServ では Servletクラス名の部分にはAlias(別名)を設定することができます。
例) クラス名 demo_pkg.helloworld の時、Alias を hello_alias に設定した場合、hello_alias を実行することで demo_pkg.helloworld と同一クラスによるインスタンスが実行されます。
仮想パスの部分に関しては<mount_point>とここで表現しています。詳しくは p.48 ApJServMountの説明を参照してください。
22
®
ローカルモードとリモートモード
ローカルモード リモートモード
mod_jserv
Apache JServ
mod_jserv
Apache JServ
• Loopback Network I/F を利用 するため通信速度が速い• Apache JServの自動起動可能
Host-A
Host-A
Host-B
• マシンリソース面での余裕 (Webサーバ部分とJVM部分の 負荷が分散されるため)
利点: 利点:
Apache JServ 1.1 の実装の方法は 「ローカルモード」 と 「リモートモード」 と呼ばれる形態があります。
両者の選択の基準は、WebサーバとJVMの負荷の具合によります。
23
®
ローカルモードと自動起動
ローカルモードの場合、以下の設定をすることでApache (mod_jserv) の起動・停止に合わせて自動的にApache JServ の起動・停止も行なうことができます
• ApJServManual off (デフォルト)• ApJServProperties <jserv.propertiesファイルのパス>
起動) % httpdsctl start
Apache と Apache JServプロセスが起動します
停止) % httpdsctl stop
Apache と Apache JServプロセスが停止します
ローカルモードの場合のみ、1つのApache JServプロセスの自動起動及び停止が行なえます。
24
®
自動起動の利点
• ApacheリスナーとApache JServプロセスの起動・停止 の同期がとれるため、Apache JServプロセスの管理が より容易になります• Apache JServプロセスがなんらかの原因で異常終了 した場合にも自動起動が行われます
後者のApache JServ異常終了時の自動起動に関しては、タイムアウトパラメータ ApJServVMTimeout の値が関係しています。
また、同パラメータと 「security.maxConnections」 の値とも関係してくるため導入する場合には値への配慮が必要です。
25
®
ロードバランシング
ホスト毎のWeight(重み)と乱数を利用した
ロードバランシングを行ないますzo
ne
IP
zoneIP
zone
IP
zone
IP
zone
IP
Apache JServ
Apache (mod_jserv)
ブラウザ
ApJServBalanceApJServHostApJServRouteApJServShmFile
関連する設定(jserv.conf)
Apache JServ 1.1は独自のロードバランス機能を提供しています。このロードバランス機能は Apache JServ プロセスが動作するホストの性能を考慮したWeight(重み)付けが可能です。
26
®
管理
設定ファイル環境変数Apache JServの導入ServletインスタンスSingleThreadModelの実装接続制限の設定セッション管理Apache JServのマウントAJP通信
タイムアウト
ここからは Apache JServ 1.1 の設定に関する説明をします。
27
®
Oracle iASのディレクトリ構成 ①
• ./Apache Apache1.3.x の関連ファイル
• ./Jserv Apache JServ1.1 の関連ファイル
• ./Jsdk JSDK2.0 の関連ファイル
• ./jdk JDK1.1.8 の関連ファイル
• ./Ojsp OracleJSP1.0 の関連ファイル
$ORACLE_HOME/Apache
前章で Apache JServ 1.1 を利用するには JRE/JDK1.1.8 or 1.2 と JSDK が必要と説明しました。Oracle HTTP Server をインストールするとApahceJServを利用するために必要なファイルインストールされます。
28
®
Oracle iASのディレクトリ構成 ②
• AddModule mod_jserv.c• Aliase /jservdocs/ “${OH}/Apache/Jserv/docs/”
• include “${OH}/Apache/Jserv/etc/jserv.conf”
httpds.conf
${OH}/Apache/Jserv/etc/ 内:
• jserv.conf
zone.properties
jserv.properties
Oracle HTTP Serverの初期状態において、Apache のサーバ設定ファイルhttpds.conf に mod_jserv モジュール追加の設定がされています。
■ mod_jserv モジュールのデフォルトの設定ファイルは jserv.conf です。 (以降の本文中では“ jserv.conf ” として表現します)
■ Apache JServプロセスのデフォルトのエンジン・プロパティ・ファイルは jserv.properties です。 (以降の本文中では“ jserv.properties ” として表現します)
■ Servletゾーンのデフォルトのゾーン・プロパティ・ファイルは zone.properties です。 (以降の本文中では“ <ゾーン名>.properties ” として表現します)
29
®
Apache JServ設定ファイルについて
Oracle HTTP Server (Apache)
mod_jservAJP
Servlet AP
Apache JServ
jserv.conf jserv.properties
zone.properties
mod_jservモジュールとAJP通信の設定
ゾーン・プロパティ・ファイル。Servletゾーン(Servletアプリケーション)単位の設定。
エンジン・プロパティ・ファイル。Apache JServプロセスの設定。
30
®
クラスの読み込み(Non-SingleThreadModel)
OS環境変数, wrapper.classpath からロードされたクラスのクラス変数
複数のServletゾーンによって共有される
メソッド内 で宣言された変数(ローカル変数)
各メソッド内でのみ有効。Servletインスタンス間で共有されない
Apache JServプロセス
Instance
Servletゾーン
Servletリポジトリからロードされたクラスのクラス変数、インスタンス変数
同一Servletインスタンス内の複数ユーザースレッドによって共有される
※ SingleThreadModelインターフェース を実装していない場合です
Thread
Thread
Thread
31
®
クラスの読み込み(SingleThreadModel)
OS環境変数, wrapper.classpath からロードされたクラスのクラス変数
複数のServletゾーンによって共有される
インスタンス変数、メソッド内 で宣言された変数(ローカル変数)
各メソッド内でのみ有効。Servletインスタンス間で共有されない
Apache JServプロセス
Servletゾーン
Instance
Instance
Instance
Servletゾーン
Servletリポジトリからロードされたクラスのクラス変数
同一Servletゾーン内の複数Servletインスタンスによって共有される
※ SingleThreadModelインターフェース を実装している場合です
32
®
JVMの設定 ①(Javaインタプリタ関連)
wrapper.bin.parameters にJavaインタプリタのオプション
を指定可能です
例: Java VMのヒープサイズを設定する場合)
wrapper.bin.parameters=-ms32mwrapper.bin.parameters=-mx128m
wrapper.bin にJavaインタプリタをフルパスで指定します
wrapper.bin=/home/Apache/jdk/bin/java
wrapper.class にApache JServのエントリポイント
wrapper.class=org.apache.jserv.JServ/* 変更する必要はありません */
・
・
・
Apache JServのエンジン・プロパティ・ファイル内の wrapper.* の指定は複数行に分けても構いません。1行で指定する場合には、:(コロン UNIX) もしくは ;(セミコロン Windows)を区切り文字とします。
33
®
JVMの設定 ②(環境変数)
wrapper.env.copy で特定の環境変数をJVMに引き渡します (全ての環境変数を引き渡すには wrapper.env.copyall )
wrapper.env にJVMに引き渡す任意の環境変数を設定します
wrapper.classpath にJVMに引き渡す環境変数CLASSPATHを設定します
wrapper.path に JVMに引き渡す環境変数PATHを設定します (書式はプラットフォーム依存[UNIX or Windows])
・
・
・
・
34
®
Servletの初期パラメータの設定
<ゾーン名>.properties ファイル
servlets.default.initArgs = [変数名] = [値], [変数名] = [値], ...
ゾーン内の全てのServletから参照可能な初期パラメータ
servlets.<クラス名>.initArgs = [変数名] = [値], [変数名] = [値], ...
ゾーン内の特定のServletからのみ参照可能な初期パラメータ
※ <クラス名> 以外に Servlet Alias を指定することも可能
Servletアプリケーション内から getInitParameter()メソッド で読み出すための初期パラメータの設定はゾーン・プロパティ・ファイルに行います 。
35
®
Servlet Alias
Apache JServ上で扱うServletクラス名に別名(Alias)を
設定することができます。
<ゾーン名>.properties ファイル
servlet.<設定したいAlias名>.code = クラス名
例) servlet.hello.code = org.foo.Dummy
利点: 簡略化した名称でクラス名を扱います。 クラス名を出さず、Servlet Aliasを利用してServlet を実行します
Apache JServでは URL から指定するクラス名に対してAlias(別名)を利用することができます。これによりクラス名を隠匿します。
※ クラス名指定とAlias指定はそれぞれ別々のServletインスタンスで処理します。
36
®
Servletインスタンスの自動起動
servlets.startup = ,hello jv.foo
起動直後のApache JServプロセス
Servletゾーン
hello instancejv.foo instance
serlvlets.startup <ゾーン名>.properties ファイル
Apache JServプロセスの起動時に生成するServletインスタンスを指定します
Apache JServ起動時にServletインスタンスをあらかじめ生成しておくことができます。Servletの指定には、クラス名およびAliasを利用します。
37
®
SingleThreadModelの場合に有効な設定①
<ゾーン名>.properties ファイル
singleThreadModelServlet.initialCapacity = [1より大きい整数]
Servletインスタンスの初期プール数
singleThreadModelServlet.maximumCapacity = [1より大きい整数]
Servletインスタンスの最大プール数
singleThreadModelServlet.incrementCapacity = [1より大きい整数]
Servletインスタンスのプール数の追加単位
ServletアプリケーションにSingleThreadModelインターフェースを実装した場合、Servletインスタンスには必ず1つだけのスレッド(リクエスト)が割り当てられることが保証されます。
Apache JServ1.1にはSingleThreadModelを実装したServletアプリケーションにのみ有効となるスライドのようなパラメータが用意されています。
- singleThreadModelServlet.initialCapacity
最初にServletアプリケーションを起動する場合の初期起動Servletインスタンス数
- singleThreadModelServlet.maximumCapacity
起動中のServletインスタンスの最大数
- singleThreadModelServlet.incrementCapacity
Servletインスタンスを追加する場合の追加単位
38
®
SingleThreadModelの場合に有効な設定②
Apache JServプロセス
Servletゾーン
Servletインスタンス
Apache JServプロセス
Servletゾーン
Servletインスタンス
SingleThreadModel
Non-SingleThreadModel
例) singleThreadModelServlet.initialCapacity = 3
singleThreadModelServlet.initialCapacity を設定した場合のイメージ。
Non-SingleThreadModelの場合、単一Servletインスタンス上で複数スレッドを処理します。しかし、SingleThreadModelの場合、Servletインスタンス毎に1スレッドが割り当てられます。Apache JServにおけるこれら3つのパラメータは各Servletクラス毎に適用されます。
もし、SingleThreadModelを実装したServletインスタンスがsingleThreadModelServlet.maximumCapacity で指定した数だけ起動している場合には、WWWクライアントには HTTP status code 503 “ServiceUnavailable” が返されます。この時、mod_jservのログには以下のようなエラーが出力されます。
[26/09/2000 21:19:37:855] (ERROR) ajp12: Servlet Error: The servletnamed "HelloWorld" is a javax.servlet.SingleThreadModel servlet and noinstance is available. Try again later.
39
®
Apache JServプロセス①
jserv.properties ファイル
bindaddress = [IPアドレス指定 / localhost / * ]
Apache JServプロセスがListeningするホスト
port = [ポート番号]
Apache JServプロセスがListeningするポート番号
zones = [ゾーン名], [ゾーン名], ....
Apache JServプロセス上のServletゾーンのリスト
<ゾーン名>.properties = [ゾーン設定ファイル名(Full Path)]
Apache JServプロセス上の各Servletゾーンの設定ファイル
Apache JServプロセスは単体でServlet実行環境として動作します。1つのTCPポートをAJPリクエスト用のリスニングポートとします。mod_jserv(Apache)がApache JServプロセスのクライアントと見ることができます。
40
®
Apache JServプロセス②
Apache JServプロセス
Oracle HTTP Server(Apache)
bindaddress = 192.168.0.1port = 8007zones = foo, buuA.properties = /Jserv/a.propertiesB.properties = /Jserv/b.properties
IP : 192.168.0.1Port: 8007
Servletゾーン 「foo」
Servletゾーン 「buu」
設定ファイル
AJP
bindaddress と port の指定によって、mod_jserv からAJP通信によって接続することができることになります。
そして、zones によって、そのApache JServ上で動作させるServletゾーンを定義し、設定ファイルと関連付けします。
41
®
Apache JServへの接続制限①
Apache JServプロセス
Servletゾーン
Servletゾーンmod_jserv
接続待ちQueueサイズ 最大同時接続数の指定
Apache JServプロセスへの接続数に関するパラメータがあります。
AJPリクエストを受け付けるTCPソケットのバックログキューのサイズ指定と、実際の最大同時接続数の指定ができます。
42
®
Apache JServへの接続制限②
接続待ちQueueサイズ
最大同時接続数の指定
jserv.properties ファイル
security.backlog [デフォルト値 5]
security.maxConnections [デフォルト値 50]
※ 上記の値を満たすように、OS設定のファイル記述子数を十分に 確保してください
TCPソケットのバックログキューの長さを指定します
最大同時接続数に関する security.maxConnections の値より大きな値にOSのfile descriptorsを設定したほうがよいでしょう。
Note: security.backlog パラメータについてOracle iAS 1.0.0/1.0.1 では Apache JServ1.1 を提供しています。このバージョンは Apache JServ1.1.1や1.1.2以前のバージョンです。ApacheJServ1.1.1以降では security.backlog の設定は security.maxConnections に吸収されています。その為、Oracle iASの将来バージョンではパラメータの仕様が変わる可能性があります。
43
®
Java Servlet のセッション
Servletは、基本的に Stateless プロトコルである HTTP を利用
• セッション情報が記録・保持されない
• あるリクエストと別のリクエストを区別することができない
• リクエスト毎にセッションが生成される
• HttpSession パッケージを利用することで、クライアントの
セッション情報を保持することが可能
• セッション管理は、Cookie または URL Rewriting により実現
一般的な Java Servlet のセッションに関する話です。
44
®
セッション管理に関する設定
<ゾーン名>.properties ファイル
session.useCookies [デフォルト値 TRUE]
セッション管理にCookie利用の可否
session.timeout [デフォルト値 1800000 msec (30min) ]
セッションのタイムアウトまでの時間(ミリ秒)
session.checkFrequency [デフォルト値 30000 msec (30sec)]
セッションのタイムアウトを検知するインターバル時間(ミリ秒)
FALSEの場合、セッション管理には encodeURL() を利用する
必要があります
セッショントラッキングでCookieを利用するかどうかを決めるパラメータです。もし、Falseに設定した場合には、Cookieは利用されず、response.encodeURL() で常にセッション情報をURLに貼り付ける必要があります。
※ session.checkFrequency と session.timeout の関係は後述のタイムアウトについてのスライドを参照してください。
45
®
Servletゾーンのマウント①
ApJServMount /servlets ajpv12://localhost:8080/foo
Oracle HTTP Server (Apache)
mod_jservAJP
Servletゾーン「foo」
Apache JServ
クライアントからWebサーバの仮想パス /servlets を指定することで、内部的にAJPを通してServletゾーン「foo」が利用されます
ApJServMount <mount_name> <protocol://host:port/zone>
jserv.conf ファイル
port:8080
Apache JServプロセス上のServletアプリケーションをWWWクライアントから実行するためには、Servletゾーンへのパスに対して仮想パスを設定する必要があります。ApJServMountを設定します。
46
®
Servletゾーンのマウント②
ApJServMount <mount_name> <protocol://host:port/zone>
jserv.conf ファイル
ApJServDefaultProtocol[デフォルト値 ajpv12]
ApJServDefaultHost[デフォルト値 localhost]
ApJServDefaultPort[デフォルト値 ajpv12 では 8007]
ApJServMountの設定の基本形は、仮想パスに対して以下の4つをマッピングします。
- protocol ( mod_jserv と Apache JServプロセス間 ) - host (Apache JServプロセスが稼動しているホスト名) - port (Apache JServプロセスがリスニングしているTCPポート#) - zone (Servletゾーン名)
ただし、protocol, host, port に関しては mod_jserv の設定ファイル内にデフォルト値を設定されているため省略可能です。zone の指定はデフォルト値はありませんが、必須ではありません。
47
®
Servletゾーンのマウント (設定例)
[1] ApJServMount /servlets /myServlets
[2] ApJServMount /servlets ajpv12://localhost:8080
[3] ApJServMount /servlets ajpv12://remote.mydomain:15643/myServlets
ブラウザから http://host/servlets/HelloWorld をリクエストした場合、デフォルトホストのゾーン「myServlets」のServlet「HelloWorld」を実行します
ブラウザから http://host/servlets/myServlets/HelloWorld をリクエストした場合、localhostのゾーン「myServlets」のServlet「HelloWorld」を実行します
ブラウザから http://host/servlets/HelloWorld をリクエストした場合、ホスト「remote.mydomain」、ポート「15643」のゾーン「myServlets」のServlet「HelloWorld」を実行します
ApJServMount の設定例です。
48
®
タイムアウト①
Apache JServプロセスのタイムアウト (ローカルモードのみ)
ApJServVMTimeout [デフォルト値 10秒]
jserv.conf ファイル
Servlet同時実行の上限(security.maxConnections)に達した状態でApJServVMTimeout の設定時間内にレスポンスがない場合に、ApacheJServプロセスを再起動します。
※ Apache JServの稼動サーバの性能に応じて十分大きな値に設定 することをお勧めします。
ApJServVMTimeoutを設定すると、(ローカルモードにおいて)設定された時間間隔でApache JServの稼動の有無をチェックします。つまり、Apache JServの以下の機能に密接に関係があります。
- 障害時のApache JServプロセスの自動再起動
例えば、ApJServVMTimeout の値によってタイムアウトが発生した場合には以下のようなログが mod_jserv のログに出力されるでしょう。
[26/09/2000 21:23:14:761] (INFO) wrapper: Java VM not responding (PID=18197)[timeout]
[26/09/2000 21:23:14:763] (EMERGENCY) ajp12[1]: cannot scan servlet headers (500)
[26/09/2000 21:23:14:763] (ERROR) an error returned handling request via protocol"ajpv12"
[26/09/2000 21:23:14:763] (EMERGENCY) ajp12[1]: cannot scan servlet headers (500)
[26/09/2000 21:23:14:763] (ERROR) an error returned handling request via protocol"ajpv12"
[26/09/2000 21:23:15:761] (EMERGENCY) ajp12: ping: no reply (-1) Please makesure that the wrapper.classpath is pointing to the correct version of ApacheJServ.jar
[26/09/2000 21:23:15:761] (INFO) wrapper: Java VM restarting (PID=18197)
[26/09/2000 21:23:15:764] (INFO) wrapper: Java VM spawned (PID=18216, PPID=18197)
49
®
タイムアウト②
Apache本体のリクエストタイムアウト
Timeout [デフォルト値 300秒]
httpds.conf ファイル
Apache本体(Webリスナー)で監視しているリクエストタイムアウトの設定です。このTimeout値になるとmod_jservを経由してApache JServに行なったリクエストはタイムアウトします。
このタイムアウトの設定 Timeout は、Apache本体側の機能ですがApacheJServのタイムアウトを考える場合には考慮する必要があるでしょう。
50
®
タイムアウト③
Servletインスタンスのタイムアウト
init.timeout [デフォルト値 10000 msec(10 sec)]
<ゾーン名>.properties ファイル
init実行のタイムアウト
destroy.timeout [デフォルト値 10000 msec(10 sec)]
destroy実行のタイムアウト
51
®
タイムアウト④
HttpSessionのタイムアウト session.timeout
session.checkFrequency
60
25
0 25 50 75 100
0 60Servlet
Client
CreateSession
ExpireSession
check check75の時点で既存のセッションは破棄されて利用できません。新規セッションを生成します。
sec
Java Servletのセッションタイムアウトに関する設定の関係を示しています。
Session を session.timeout で指定した時間利用していない場合、次のsession.checkFrequency によるチェックが行なわれた時点でセッションは破棄されます。
53
®
はじめに
mod_jserv設定ファイル
項目 値 ・ 名称
/home/Apache/Jserv/conf/jserv.conf
Apache JServ設定ファイル /home/Apache/Jserv/conf/jserv.properties
Servletゾーン設定ファイル /home/Apache/Jserv/conf/zone.properties
Servletリポジトリの場所 /home/Apache/Jserv/servlets/HelloWorld.java
Apache JServ AJP通信ポート 8007
Servletゾーン名 zone01
この章における設定です。
54
®
サンプル HelloWorld.java 準備
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;
public class HelloWorld extends HttpServlet implements SingleThreadModel{ public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out; response.setContentType("text/html"); out = response.getWriter(); out.println("<HTML><HEAD><TITLE>HELLO Test</TITLE></HEAD>"); out.println("<BODY bgcolor=¥"#FFFFFF¥">"); out.println("<H1>Hello World!!</H1>"); out.println("</BODY></HTML>"); out.close(); }}
ファイル HelloWorld.java
※ コンパイルしたファイルをServletリポジトリに置きます
55
®
環境設定例(jserv.conf)
• ApJServManual off• ApJServProperties /home/Apache/Jserv/conf/jserv.properties• ApJServDefaultProtocol ajpv12• ApJServDefaultHost localhost• ApJServDefaultPort 8007• ApJServMount /servlets /zone01• ApJServLogFile /home/Apache/Jserv/logs/mod_jserv.log
mod_jserv 側の設定として特に重要な設定は、ApJServManual とApJServMount です。
56
®
環境設定例(jserv.properties)
• wrapper.bin = /home/Apache/jdk/bin/java• wrapper.classpath = /home/Apache/Jserv/libexec/ApacheJServ.jar• wrapper.classpath = /home/Apache/Jsdk/lib/jsdk.jar• port = 8007• zones = zone01• zone01.properties = /home/Apache/Jserv/etc/zone.properties• security.allowedAddresses = 127.0.0.1• log.file = /home/Apache/Jserv/logs/jserv.log
Apache JServプロセスのAJP通信リスニングポートの設定や、稼動するServletゾーンの設定、環境変数の設定をしています。wrapper.classpath にApacheJServ.jar と jsdk.jar へのパスを設定する必要があります。
57
®
環境設定例(zone.properties)
• repositories = /home/Apache/Jserv/servlets• servlet.greeting.code = HelloWorld
Servletリポジトリの設定などがあります。ここではサンプルとして特別に HelloWorld クラスに対して greeting というAlias を設定しています(後者)。
58
®
起動
% httpdsctl start
[2000/08/22 10:43:31:435 JST] <info> ApacheJServ/1.1 is starting...[2000/08/22 10:43:31:437 JST] <info> Connection authentication is disabled[2000/08/22 10:43:31:468 JST] <info> Connection allowed from localhost/127.0.0.1[2000/08/22 10:43:31:470 JST] <info> Listening on port 8007 accepting 5 maximum connections[2000/08/22 10:43:31:490 JST] <info> Creating Servlet Zones[2000/08/22 10:43:31:490 JST] <info> Servlet Zone root initializing...[2000/08/22 10:43:31:516 JST] <info> Initialisation timeout: 10 seconds[2000/08/22 10:43:31:516 JST] <info> Destroy timeout: 10 seconds[2000/08/22 10:43:31:516 JST] <info> Session timeout: 60 seconds[2000/08/22 10:43:31:516 JST] <info> New session timeout: 1800 seconds[2000/08/22 10:43:31:516 JST] <info> Session check frequency: 30 seconds[2000/08/22 10:43:31:517 JST] <info> Autoreload on zone file changes: true[2000/08/22 10:43:31:517 JST] <info> Autoreload on classfile changes: true[2000/08/22 10:43:31:520 JST] <info> Default initArgs: {}[2000/08/22 10:43:31:531 JST] <info> Servlet name: greeting
jserv.log への出力
ローカルモード& Apache JServの自動起動にしていれば、httpdsctl start を実行することで Apache と Apache JServ が起動します。
59
®
実行
http://<localhost>.<domainname>/servlets/HelloWorld/or
http://<localhost>.<domainname>/servlets/greeting
Servletクラス名の指定
Servletエイリアス名の指定
このサンプルでは、ApJServMount で /servlets という仮想パスを設定しましたので、 /servlets のあとに、「 HelloWorld 」 もしくは 「 greeting 」 を指定することで HelloWorld.class のインスタンスが実行されます。
61
®
Oracle JSP
Oracle JSP はOracle社が提供するJSPエンジンです。Oracle iAS1.0.0 には Oracle JSP 1.0 (JSP 1.0 specification準拠) がバンドルされています
Oracle HTTP Server(mod_jserv)
Apache JServプロセス
Servletエンジン
JSPエンジン
JSP AP
ブラウザ
Oracle JSPの話です。Oracle iAS 1.0.0には Oracle JSP 1.0 がバンドルされています。Oracle iAS 1.0.1以降には Oracle JSP 1.1 以降がバンドルされています。
62
®
Oracle JSP関連ファイル
Oracle iAS1.0.0 では以下の構成でインストールされています
$ORACLE_HOME/Apache/Ojsp :
• conf
• docs
• lib
• webroot
Apache側での基本的な設定
オンラインドキュメント
Oracle JSP用ライブラリ
Oracle JSPを利用したサンプル
- ojsp.jar Oracle JSP用パッケージ- servlet.jar JSP実装に必要なServlet 2.1 API- ojspc.jar JSPページのコマンドライン変換ユーティリティ
63
®
サンプル HelloUser.jsp 準備
<%@page session="false" %><jsp:useBean id="name" class="oracle.jsp.jml.JmlString" scope="request" > <jsp:setProperty name="name" property="value" param="newName" /></jsp:useBean>
<HTML><HEAD><TITLE>Hello User</TITLE></HEAD><BODY><% if (!name.isEmpty()) { %><H3>Welcome <%= name.getValue() %></H3><% } %><FORM METHOD=get>Enter your Name:<INPUT TYPE=TEXT name=newName size = 20><INPUT TYPE=SUBMIT VALUE="Submit name"></FORM></BODY></HTML>
ファイル HelloUser.jsp
64
®
環境設定の追加項目(ojsp.conf)
• Alias /jspsamples/ “/ias/Apache/Ojsp/webroot/”• ApJServAction .jsp /servlets/oracle.jsp.JspServlet
• wrapper.classpath = /ias/Apache/Ojsp/lib/servlet.jar• wrapper.classpath = /ias/Apache/Ojsp/lib/ojsp.jar
ojsp.conf
jserv.properties
拡張子 jsp に対して Oracle JSP のServletクラス(JSPエンジン)が実行されるように設定します。
65
®
Oracle JSPのオプション設定①
zone.properties ファイル内に以下の形式で幾つかの設定を
することができます
servlet.oracle.jsp.JspServlet.initArgs = [設定名] = [値] 例) servlet.oracle.jsp.JspServlet.initArgs = page_repository_root = /jsps
※ 詳しくは「Oracle JSP 開発者ガイド 第2章」を御参照ください 代表的なパラメータを次のスライドで3つ紹介します。
JSPページから解析されたJavaコードとJavaバイトコードが格納される_pages ディレクトリの配置を指定することができます。(必須ではありません)
66
®
Oracle JSPのオプション設定②developer_mode = true/falset rue が設定されている場合、Oracle JSPエンジンは処理要求が発生するたびにJSPページやアプリケーションが変更されていないかどうかをチェックします。一方、fa lseが設定されている場合には、初めにロードされた状態が維持されます。例えば、一旦ロードされたJSPファイルを変更した後で処理要求が発生した場合 t rue が設定されていれば、その変更は反映され fa lse が設定されている場合には、その変更は反映されません。デフォルト値は true です。ただし、実行環境においてはパフォーマンスを最大限に引き出すため false を設定することをお勧めします。
page_repository_root = <directory name>変換したJSPを生成、ローディングするためのディレクトリ。デフォルトは、URIの最初の仮想パスです。このサンプルでは、/jspsamples/の物理ディレクトリに _pagesが作成されます。
translate_params = true/falset rue が設定されている場合、通常マルチバイト文字列を取得してきた際に行わなければならない処理が必要なくなります。デフォルトは false です。
Oracle JSPのマニュアルよりの抜粋です。
67
®
起動と実行
% httpdsctl start
[2000/08/24 10:44:43:554 GMT+09:00] <servletLog> oracle.jsp.JspServlet: init
JSPアプリケーションのログもjserv.log(Apache JServログ)へ出力
http://<localhost>.<domainname>/jspsamples/HelloUser.jsp
起動
実行
69
®
Apache JServ の実行
- 起動モード: ( Manual , Automatic )- Automaticモード(ApJServManual = off) 1つのJVMを自動起動します。mod_jservが監視して いるためJVMが異常終了しても自動再起動します。- Manualモード JVMを手動起動する必要があります(JVMは自動 起動しません)。 起動したいホスト上でのShell or Batch スクリプトから JVMの起動をしてください。
※ 上記表現における“JVM”は Apache JServプロセスを指します
70
®
複数JVMの扱いについて
- 1つ以上のJVMを利用する場合にはJVMを手動起動 する必要があります。- 各JVMは自立したプロセスとして存在し、メモリ、CPU リソースを消費します- 各JVMは、HTTPdからのAJPリクエストを特定のPort# でリスニングします。同一ホスト内で複数JVMを利用す る場合にはPort#が重複しないように注意してください。- Port# はJVMエンジン・プロパティ・ファイルに書きます。 (各JVM毎にエンジン・プロパティ・ファイルが必要です)
※ 上記表現における“JVM”は Apache JServプロセスを指します
71
®
Apache JServの手動起動について
同一仮想ホスト内で複数Apache JServプロセスを稼動させる場合には、別々のリスニング用TCPポート番号を割り当てる必要があります
以下のような場合には Apache JServプロセスを手動起動する必要があります:
• リモートホストでApache JServプロセスを配置する• 複数Apache JServプロセスを利用する
mod_jserv
Remote Host
port# 8007
port# 8008
port# 8009
72
®
手動起動スクリプトの例
#!/bin/shjava_bin=$ORACLE_HOME/Apache/jdk/binproperties=$ORACLE_HOME/Apache/Jserv/etc/jserv.propertieslog=$ORACLE_HOME/Apache/Jserv/etc/jserv_manual.log
CLASSPATH=$CLASSPATH:$ORACLE_HOME/Apache/Jsdk/lib/jsdk.jar; export CLASSPATHCLASSPATH=$CLASSPATH:$ORACLE_HOME/Apache/Jserv/libexec/ApacheJServ.jar; export CLASSPATH
$java_bin/java org.apache.jserv.JServ $properties $1 2>> $log
Apache JServの手動起動スクリプトの例です。
73
®
JDK1.2へのアップグレードについて
Apache JServで利用するJDKバージョンを1.1.8 から 1.2 へ変更することができます
JDK1.2 をダウンロード
JDK1.2用のライブラリを参照するように
ユーザの環境変数の設定変更
jserv.properties ファイルの設定変更
Ⅰ
Ⅱ
Ⅲ
詳しくは、インストレーションガイド 補足Bを参照してください。
74
®
JDK1.2へのアップグレード
jdk1.1.8 jdk1.2
環境変数
JAVA_HOME jdk1.1.8インストール先 jdk1.2インストール先
PATH $JAVA_HOME/bin
CLASSPATH $ORACLE_HOME/jdbc/lib/classes111.zip
$ORACLE_HOME/jdbc/lib/classes12.zip
jser
v.pr
oper
ties
wrapper.bin $JAVA_HOME/bin/java (ApJServManual on の場合)
wrapper.classpath
$ORACLE_HOME/jdbc/lib/classes111.zip
$ORACLE_HOME/jdbc/lib/classes12.zip
$ORACLE_HOME/Apache/BC4J/lib/jbodatum111.zip
$ORACLE_HOME/Apache/BC4J/lib/jbodatum112.zip
$JAVA_HOME/lib/tools.jar 等$JAVA_HOME/lib/classes.jar
75
®
ロードバランス機能
Apache JServのロードバランシングとは?
• 複数のApache JServに対してリクエストをWeight(重み) に応じて振り分けます• Servletセッションを利用している場合には、Cookieを使い 常に同一Apache JServに処理を割り振ります• Apache JServが予期しない終了をした場合には、自動的 に別のApache JServにリクエストを割り振ります(フォルト トレランス機能)
Apache JServの機能
76
®
ロードバランス機能
ノード毎のWeightを設定
Weight 4
Weight 1
Weight 1
処理の割り振られる比率
ブラウザ
Oracle HTTP Server(mod_jserv)
Apache JServの機能
Apache JServ1.1が提供しているロードバランス機能は、ノード毎の重み付けをベースにしたロードバランス機能です。
77
®
フォルトトレランス機能
ブラウザから透過的なフェイルオーバー
ブラウザ
Oracle HTTP Server(mod_jserv)
接続先を自動的に切りかえる
Apache JServの機能
Apache JServ1.1のロードバランス機能が提供しているフォルトトレランス機能によって、もし、接続先のノードやApache JServプロセスに以上が発生しても自動的に別の(現在稼働中の)Apache JServプロセスに接続し直します。この接続切り替え作業はユーザー(ブラウザ)からは透過的に行われます。
※ ただし、アプリケーション・フェイルオーバーとしての機能ではないため、 仮にセッション機能などを利用していた場合にはその時点でのセッショ
ン 情報は失われます。
78
®
フォルトトレランス機能Apache JServの機能
フェイルオーバーの裏側
ブラウザ
httpdhttpdhttpdhttpd
watchdog
共有ファイル
プロセスの状態
各Apache JServプロセスの
状態を監視している
Apache JServ1.1のロードバランス機能におけるフォルトトレランス機能の仕組みを示しています。
ロードバランス機能を利用する場合に通常、「共有ファイル」を設定します。この共有ファイルとは、Apache JServプロセスの状態(稼動の有無)が書き込まれます。動作の流れとしては、
[1] WWWブラウザからのリクエストをApacheが受け付けます。
[2] 事前に割り当てられているApache JServプロセスへ接続を試みます。
[3] もし、Apache JServプロセスから応答がなければApache(mod_jserv)側 が共有ファイルに死んでいるApache JServプロセスの情報を書きます。
[4] そして同時に、共有ファイル内にある「現在、正常に稼動している」 Apache JServプロセスの情報を元に再度接続を試みます。
[5] これで接続先の切り替え(フェイルオーバー)完了
※ 共有ファイルに「現在、正常に稼動している」ことを更新するのは watchdog プロセスが行っています
79
®
ロードバランス機能
ApJServHost node01 ajpv12://10.10.10.1:8007ApJServHost node02 ajpv12://10.10.10.2:8007
ApJServRoute Route01 node01ApJServRoute Route02 node02
ApJServBalance bal_name node01ApJServBalance bal_name node02 4
ApJServMount /deliver balance://bal_name/root
ApJServShmFile /home/Apache/Jserv/etc/balance.dat
Apache JServの機能
設定例 jserv.conf (mod_jservの設定ファイル)
ノードの設定
経路名の設定
グループ作成
Mountの設定
共有ファイル
Apache JServ1.1のロードバランス機能のための設定例です。
ノード毎のWeight(重み)はスライドの“グループ作成”の箇所で行います。
この例では、“bal_name”というロードバランスを行う組(グループ)に“node01(重み1)”と“node02(重み4)”を設定しています。ApJServMountで指定している仮想パス /deliver に対してWWWクライアントからリクエストを発行するとWeight(重み)と乱数に基づいて、リクエストは割り振られます。各ノードへの経路には名称を設定しています。この経路名はServletセッション機能を利用した場合に Cookie にも含まれます。
80
®
ロードバランス機能
[07/09/2000 11:36:40:599] (INFO) setting defaults for balance bal_name-node01 (weight 1)[07/09/2000 11:36:40:614] (INFO) setting defaults for balance bal_name-node02 (weight 4)[07/09/2000 11:36:40:615] (INFO) setting defaults for host node01-Route01[07/09/2000 11:36:40:615] (INFO) setting defaults for host node02-Route02[07/09/2000 11:36:40:615] (INFO) setting up balance for mount /deliver/, zone root[07/09/2000 11:36:40:615] (INFO) balancing host node01-Route01[07/09/2000 11:36:40:615] (INFO) balancing host node02-Route02
Apache JServの機能
mod_jservログによる設定の確認
ロードバランスの設定が有効になった直後のmod_jservログです。
82
®
設定ファイル
jserv.conf
jserv.properties
zone.properties
mod_jservの設定ファイル。Apache JServと連携、AJPの設定を
します
Apache JServプロセス(JVM)の設定ファイル。Java環境変数、クラスパス、ログ出力等の設定をします
Servletゾーン単位の設定をします
83
®
jserv.conf
• ApJServManual• ApJServProperties• ApJServLogFile• ApJServLogLevel• ApJServDefaultProtocol• ApJServDefaultHost• ApJServDefaultPort• ApJServVMTimeout• ApJServProtocolParameter• ApJServSecretKey• ApJServMount• ApJServMountCopy• ApJServAction
• ApJServHost• ApJServRoute• ApJServBalance• ApJServShmFile
LOADBALANCE PARAMETERsGENERAL PARAMETERs
84
®
jserv.propertiesEXECUTE PARAMTERs
• wrapper.bin• wrapper.bin.parameters• wrapper.class• wrapper.class.paramters• wrapper.path• wrapper.classpath• wrapper.env• wrapper.env.copy• wrapper.env.copyall • wrapper.protocol
GENERAL PARAMTERs
• bindaddress• port• zones• <zone name>.properties
THREAD POOL PARAMETERs
• pool• pool.capacity• pool.controller
85
®
jserv.propertiesSECURITY PARAMTERs
• security.selfservlet• security.maxConnections• security.backlog• security.allowedAddresses• security.authentication• security.secretKey• security.challengeSize
LOGGING PARAMTERs
• log• log.file• log.timestamp• log.dateFormat• log.queue.maxage• log.queue.maxsize• log.channel• log.channel.<channel_name>• log.channel.info• log.channel.servletException• log.channel.jservException• log.channel.warning• log.channel.servletLog• log.channel.critical• log.channel.debug
86
®
zone.propertiesLIST of REPOSITORIEs
• repositories
CLASSLOADER PARAMTERs
• autoreload.classes• autoreload.file• init.timeout• destroy.timeout• session.useCookies• session.timeout• session.checkFrequency
SingleThreadModel Servlets PARAMTERs
• singleThreadModelServlet.initialCapacity• singleThreadModelServlet.incrementCapacity• singleThreadModelServlet.maximumCapacity
87
®
zone.properties (SERVLET PARAMETERs)
STARTUP SERVLETs
• servlets.startup
SERVLET ALIASes
• servlets.<alias>.code
GLOBAL INIT PARAMETERs
• servlets.default.initArgs
SERVLET INIT PARAMETERs
• servlet.<class_name>.initArgs
ALIASES SERVLET INIT PARAMETERs
• servlet.<alias>.initArgs