software powers the internet tm

88
1 ® SOFTWARE POWERS THE INTERNET TM

Upload: others

Post on 03-Feb-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

1

®

SOFTWARE POWERS THE INTERNETTM

2

®

Apache JServ管理者ガイド

本資料は Oracle iAS 1.0.0 for Solaris をベースにして作成しております。

3

®

アジェンダ

• JServ概要• JServ管理• JServインストレーションとサンプル• Servletアプリケーションの登録と実行• JSPアプリケーションの登録と実行• Appendix -Ⅰ&Ⅱ

4

®

Apache JServ概要

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 によるチェックが行なわれた時点でセッションは破棄されます。

52

®

Servletサンプルの実行

簡単なServletアプリケーションを実行するまでの手順を説明します。

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 のインスタンスが実行されます。

60

®

Oracle JSPサンプルの実行

簡単なOracle JSPアプリケーションを実行するまでの手順を説明します。

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

起動

実行

68

®

Appendix - Ⅰ

• Apache JServの手動起動について• JDK1.2 へのアップグレード• ロードバランス機能の利用

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ログです。

81

®

Appendix - Ⅱ

• 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

88

®

SOFTWARE POWERS THE INTERNETTM