このリリース ノートには、iPlanet Web Server Enterprise Edition のバージョン 4.1 SP 5 のリリース時点で提供されていた重要情報が含まれています。ここでは、新しい機能および拡張された機能、インストールの注意事項、判明している問題、および他の最新情報を扱っています。iPlanet Web Server Enterprise Edition を使用する前にこのドキュメントをお読みください。
このリリース ノートのオンライン バージョンは、Web サイト http://docs.iplanet.com/docs/manuals/ に掲載されています。ソフトウェアのインストールと設定を行う前にこの Web サイトをご覧ください。また、この Web サイトを定期的に訪れ、最新のリリース ノートやマニュアルをチェックしてください。
iPlanet Web Server Enterprise Edition バージョン 4.1 にはいくつかの拡張が行われました。これらの拡張機能については次の節で説明します。
iPlanet Web Server バージョン 4.1 で解決された問題のリストについては、解決された問題を参照してください。
iPlanet Web Server 4.1 では、カスタム JSP タグがサポートされています。この節では、作業例を使用してカスタム タグ ライブラリを作成する方法について説明します。この例には、ドキュメント ルート ディレクトリの下にある次のディレクトリおよびファイルが含まれています。
/dtds/
web-jsptaglib_1_1.dtd
/jsps/
test-tags.jar
test-tags.jsp
test-tags.jar ファイルを作成するには、タグ ライブラリとその関連ハンドラ クラスをビルドするための作業領域を作成する必要があります。この作業領域には、次のディレクトリおよびファイルが含まれています。
workarea/taglibs/
./META-INF:
taglib.tld
./examples:
ExampleTagBase.class
ExampleTagBase.java
FooTag.class
FooTag.java
FooTagExtraInfo.class
FooTagExtraInfo.java
LogTag.class
LogTag.java
タグ ライブラリおよびハンドラ クラスのサンプル ファイル セットは両方とも、iPlanet Web Server 4.1の次のディレクトリ内に入っています。
server_root/plugins/samples/servlets/taglibs
まず、カスタム タグとその関連ハンドラ クラスの概要を示すタグ ライブラリ定義 (TLD) ファイルを作成する必要があります。この TLD ファイルは XML 1.0 ファイルです。
TLD ファイルは、関連付けられた DTD ファイルを参照する必要があります。DTD ファイルの名前は web-jsptaglib_1_1.dtd でなければなりません。DTD ファイルは、iPlanet Web Server の Web サイトからダウンロードすることができます。DTD ファイルには、TLD ファイル内の URL (たとえば、http://server:port/dtds/web-jsptaglib_1_1.dtd) を介してアクセスできるようにする必要があります。DTD ファイルの URL が間違っているか、DTD ファイルが破損している場合、カスタム タグを含んでいる JSP を開くことはできません。
タグ ライブラリには taglib.tld という名前を付ける必要があり、手順 4 で作成する taglib.jar ファイル内の META-INF サブディレクトリの下に置く必要があります。
<?xml
version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://server:port/dtds/web-jsptaglib_1_1.dtd">
<!-- a tag library descriptor -->
<taglib>
<!-- after this the default space is
"http://java.sun.com/j2ee/dtds/jsptaglibrary_1_2.dtd"
-->
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<prefix>simple</prefix>
<urn></urn>
<info>
A simple tab library for the examples
</info>
<!-- A simple Tag -->
<!-- foo tag -->
<tag>
<name>foo</name>
<tagclass>examples.FooTag</tagclass>
<teiclass>examples.FooTagExtraInfo</teiclass>
<bodycontent>JSP</bodycontent>
<info>
Perform a server side action; uses 3 mandatory attributes
</info>
<attribute>
<name>att1</name>
<required>true</required>
</attribute>
<attribute>
<name>att2</name>
<required>true</required>
</attribute>
<attribute>
<name>att3</name>
<required>true</required>
</attribute>
</tag>
<!-- Another simple tag -->
<!-- log tag -->
<tag>
<name>log</name>
<tagclass>examples.LogTag</tagclass>
<bodycontent>TAGDEPENDENT</bodycontent>
<info>
Perform a server side action; Log the message.
</info>
<attribute>
<name>toBrowser</name>
<required>false</required>
</attribute>
</tag>
</taglib>
taglib.tld ファイル内に DOCTYPE を含めないと、JSP コンパイラは次の例外を返します。
Unable to open taglibrary /jsps/test-tags.jar : com.sun.xml.tree.TextNode
ExampleTagBase.java ファイルは次のとおりです。
package
examples;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public abstract class ExampleTagBase implements Tag {
public void setParent(Tag parent) {
this.parent = parent;
}
public void setBodyContent(BodyContent bodyOut) {
this.bodyOut = bodyOut;
}
public void setPageContext(PageContext pageContext) {
this.pageContext = pageContext;
}
public Tag getParent() {
return this.parent;
}
public int doStartTag() throws JspException {
return SKIP_BODY;
}
public int doEndTag() throws JspException {
return EVAL_PAGE;
}
// Default implementations for BodyTag methods as well
// just in case a tag decides to implement BodyTag.
public void doInitBody() throws JspException {
}
public int doAfterBody() throws JspException {
return SKIP_BODY;
}
public void release() {
bodyOut = null;
pageContext = null;
parent = null;
}
protected BodyContent bodyOut;
protected PageContext pageContext;
protected Tag parent;
}
package
examples;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.util.Hashtable;
import java.io.Writer;
import java.io.IOException;
/**
* Example1: the simplest tag
* Collect attributes and call into some actions
*
* <foo att1="..." att2="...." att3="...." />
*/
public class FooTag
extends ExampleTagBase
implements BodyTag
{
private String atts[] = new String[3];
int i = 0;
private final void setAtt(int index, String value) {
atts[index] = value;
}
public void setAtt1(String value) {
setAtt(0, value);
}
public void setAtt2(String value) {
setAtt(1, value);
}
public void setAtt3(String value) {
setAtt(2, value);
}
/**
* Process start tag
*
* @return EVAL_BODY_INCLUDE
*/
public int doStartTag() {
return EVAL_BODY_TAG;
}
public void doInitBody() throws JspException {
pageContext.setAttribute("member", atts[i]);
i++;
}
public int doAfterBody() throws JspException {
try {
if (i == 3) {
bodyOut.writeOut(bodyOut.getEnclosingWriter());
return SKIP_BODY;
} else
pageContext.setAttribute("member", atts[i]);
i++;
return EVAL_BODY_TAG;
} catch (IOException ex) {
throw new JspException(ex.toString());
}
}
}
FooTagExtraInfo.java ファイルは次のとおりです。
package
examples;
import javax.servlet.jsp.tagext.*;
public class FooTagExtraInfo extends TagExtraInfo {
public VariableInfo[] getVariableInfo(TagData data) {
return new VariableInfo[]
{
new VariableInfo("member",
"String",
true,
VariableInfo.NESTED)
};
}
}
package
examples;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.IOException;
/**
* Log the contents of the body. Could be used to handle errors etc.
*/
public class LogTag
extends ExampleTagBase
implements BodyTag
{
boolean toBrowser = false;
public void setToBrowser(String value) {
if (value == null)
toBrowser = false;
else if (value.equalsIgnoreCase("true"))
toBrowser = true;
else
toBrowser = false;
}
public int doStartTag() {
return EVAL_BODY_TAG;
}
public int doAfterBody() throws JspException {
try {
String s = bodyOut.getString();
System.err.println(s);
if (toBrowser)
bodyOut.writeOut(bodyOut.getEnclosingWriter());
return SKIP_BODY;
} catch (IOException ex) {
throw new JspException(ex.toString());
}
}
}
java クラスの作業ディレクトリ (たとえば、workarea/taglibs/examples) に切り替え、クラスをコンパイルして適切なクラスパスを設定します。次のコマンドは、すべて 1 行で入力する必要があります。
/usr/java1.2/bin/javac -classpath java_home/jre/lib/rt.jar:server_root/bin/https/jar/servlets.jar:server_root/bin/http
s/jar/jspengine.jar *.java
作業ディレクトリ (たとえば、workarea/taglibs) から taglib.tld ファイルとクラス ファイルを含んでいる JAR ファイルを作成します。次のコマンドを使用します。
これが完了すると、workarea ディレクトリ内に test-tags.jar ファイルが表示されます。次のコマンドを入力してこれを確認します。
-rw-r--r-- 1 joe staff 7009 May 18 02:37 test-tags.jar
cp test-tags.jar jsp_location/jsps
server_root/https-server_id/config/jvm12.conf ファイル内のjvm.classpath オプションを編集して、カスタム タグ ライブラリ ファイルへのパスを含めます。次の例は、すべて 1 行でファイル内に書き込む必要があります。
jvm.classpath=java_home/jre/lib/rt.jar:java_home/lib/tools.jar:jsp_location/jsps/test-ta gs.jar
次に、カスタム タグ ライブラリ ファイルが、通常の Java ランタイムおよびツールと共にサーバのクラスパスに追加されたことを確認します。
また、taglib.tld ファイル内で指定した URL で web-jsptaglib_1_1.dtd ファイルにアクセスできることを確認します。この DTD の URL が見つからないと、ログ ファイルに次のようなエラーが記録されます。
Unable to open taglibrary /jsps/test-tags.jar : Unable to open the tag library descriptor: Stream closed.
この節では、カスタム タグを使用する JSP ファイルの例を示します。カスタム プレフィックスの tt は、カスタム タグ ライブラリに渡されるタグ (foo タグと log タグ) を示します。
http://server:port/jsps/test-tags.jsp
ハードウェア トークンに複数のサーバ証明書を保存するには、次の手順に従います。
リクエスト ヘッダのデフォルトの制限は 32 エントリであり、必要に応じて magnus.conf ファイルのMaxRqHeaders nn ディレクティブを使用して、より大きな値に調整することができます。リクエスト ヘッダを 32 よりも小さく設定することはできないので注意してください。
新しい magnus.conf ディレクティブ、ReentrantTimeFunctions on|off は、新しい再入可能な時間関数を有効にします。新しい再入可能な関数は Solaris プラットフォームでのみサポートされています。
ReentrantTimeFunctions が on の場合、サーバ起動スクリプト内の TZ 環境変数の対応値を強制することをお勧めします。TZ 値の例は次のとおりです。
TZ="EST5EDT";
export TZ # eastern time
TZ="PST8PDT"; export TZ # pacific time
TZ="MET-1MEST,M3.5.0,M10.5.0" # middle european time with posix DST rules
environ(5) マニュアル ページに TZ 環境変数の値のリストが表示されます。このページには、コマンド プロンプトで次のように入力してアクセスすることができます。
リストされている TZ 値は、時間帯データベース ファイル (US/Pacific など) 以外、すべてサポートされています。
iPlanet Web Server Enterprise Edition version 4.1 は、Linux プラットフォーム (カーネル 2.2.12 以降および glibc-2.1.2 以降) 上で動作します。
iPlanet Web Server Enterprise Edition 4.1 では、次の JavaScript および Java 拡張が行われています。
ノート : iPlanet Web Server Enterprise Edition 4.1 では、HttpApplets とも呼ばれる Java サーバサイド アプレットはサポートされていません。代わりに Java Servlet を使用してください。
Forte for Java デバッガを使用できるように iPlanet Web Server Enterprise Edition 4.1 を設定するには、次の手順に従います。
jvm.enableDebug=1
jvm.compiler=NONE
jvm.printErrors=1
JPDA をインストールしている場合は、次の行を追加します。
jvm.enableDebug=1
jvm.compiler=NONE
jvm.printErrors=1
jvm.option=-classic
jvm.option=-Xnoagent
jvm.option=-Xrunjdwp:transport=dt_socket,server=y,suspend=n
SessionCreationInfo:
------------------
Total Sessions Created 48/1224
Sessions In Free List 0
Active Sessions From Free List 0
サーバにおけるスレッドのメモリの解放方法が変更されたため、Sessions In Free List および Active Sessions From Free List エントリは削除されています。エントリは、perfdump 出力の次のセクションに移動しています。
ListenSocket
#0:
------------------
Address https:\\INADDR_ANY:80
ActiveThreads 48
WaitingThreads 47
BusyThreads 1
Thread limits 48/512
Total Sessions 48/712
ActiveThreads、WaitingThreads、BusyThreads、および Thread limits エントリに変更はありません。
以前、Total Sessions エントリは、Total Sessions Created でした。その最大値は (RqThrottle + KAPool) より小さくなっています。iPlanet Web Server Enterprise Edition version 4.1 のスレッドのメモリの解放方法は合理化されており、特に負荷の重い (>12000 ヒット/分) サイトのサーバのパフォーマンスが向上しています。
サーバがその RqThrottle + KAPool 制限に達する (ヒットする) と (この場合は 712)、エラーは、次のようにエラー ログに記録されます。
[date][pid] The server has created it configured maximum number of threads, %d.
このエラーはプロセス時に一度だけ生成され、MaxProcs が 1 より大きい場合は、子プロセスごとに生成されます。
設定されているスレッドの最大数に達したからといって、サーバ内のスレッド数を盲目的に増やす必要はありません。スレッド数は大きければ良いというものではありません。スレッドの制限数に達したということは単に、サーバがある時点 (負荷ピーク時) でこの制限数のスレッドを必要としたことに過ぎません。したがって、サーバが適時リクエストを処理できるのであれば、サーバの調整は十分です。定期的に perfdump 出力をチェックし、BusyThreads が 頻繁に RqThrottle 最大値に達する場合は、スレッドの制限数を多くしてください。
iPlanet Web Server Enterprise Edition 4.1 ではセキュリティの強化が行われました。次の節でこれらについて説明します。
iPlanet Web Server Enterprise Edition 4.1 では、FORTEZZA 暗号化がサポートされています。
デフォルトでは、管理者は Web サーバを起動する前にキー データベース パスワードの入力を要求されます。Web サーバを自動的に再起動できるようにする場合は、password.conf ファイルにパスワードを保存する必要があります。このファイルとキー データベースが損なわれないように、システムが適切に保護されていることを確認してください。
パスワードを設定するには、サーバ インスタンスの config サブディレクトリ内に新しい password.conf ファイルを作成します。サーバに付属の内部 PKCS#11 ソフトウェア暗号化モジュールを使用している場合は、次の情報を入力します。
Communicator Certificate DB : yourpassword
別の PKCS#11 モジュール (ハードウェア暗号化用やハードウェア アクセラレータ用など) を使用している場合は、次のように PKCS#11 モジュールの名前に続けてパスワードを指定する必要があります。
パッケージ化された Servlet を変更した場合、新しいバージョンは自動的に再読み込みされません。
新しいバージョンを自動的に再読み込みするには、contexts.properties ファイル内で次のプロパティを設定します。
context.global.isModifiedCheckAggressive=true
iPlanet Web Server Enterprise Edition 4.1 は、n32 アプリケーション バイナリ インターフェイス (ABI) を使用してコンパイルされています。この ABI は IRIX 6.2 で導入されており、高性能 32 ビット アプリケーションに適した ABI です。
旧バージョンの Netscape Enterprise Server に対してサードパーティのアプリケーションまたはプラグインを使用している場合は、n32 バージョンのバイナリおよび DSO をアプリケーション ベンダーから入手する必要があります。
n32 バイナリを使用していることを確認するには、file(1) コマンドを発行します。すると、次のようなメッセージが返されます。
filename: ELF N32 MSB mips-3 dynamic lib MIPS - version 1
filename: ELF N32 MSB mips-4 dynamic lib MIPS - version 1
n32 の詳細については、マニュアルの ABI(5) のページを参照してください。
iPlanet Web Server Enterprise Edition バージョン 4.1 の Solaris ユーザには次のパッチをお勧めします。また、これらのパッチは、Sun の推奨パッチ リスト内にもあります。Sun の推奨パッチ リストについては、http://sunsolve.sun.com/pubpatch を参照してください。Sun のパッチを入手するには、最寄りの Sun サービス プロバイダまでお問い合わせください。
各パッチには、リストに記載されているリビジョン以降のリビジョンを使用します。たとえば、パッチ 111111-01 が必要な場合は、それ以降のリビジョンである 111111-03 を使用することができます。
JDK を使用している場合は、追加パッチが必要な場合があるので注意してください。
次のパッチは、Solaris 2.6 で iPlanet Web Server Enterprise Edition 4.1 を実行するユーザのための推奨パッチです。
次のパッチは、Solaris 7 で iPlanet Web Server Enterprise Edition 4.1 を実行するユーザにお勧めします。
次の Solaris パッチは、コンパイラを使用するユーザにお勧めします。
iPlanet Web Server Enterprise Edition 4.1 の HP ユーザには次のパッチをお勧めします。また、これらのパッチは、HP の推奨パッチ リスト内にもあります。HP の推奨パッチ リストについては、http://us-support.external.hp.com/index.html/ を参照してください。
iPlanet Web Server Enterprise Edition 4.1 の Compaq Tru64 ユーザには次のパッチをお勧めします。
Service Pack 6 がインストールされたWindows NT 4.0 が必要です。
この節には、iPlanet Web Server のインストール、アップグレード、および移行に関する情報が記載されています。システムの必要条件や製品のインストール方法の詳細については、インストールおよび移行ガイドを参照してください。
次の表は、iPlanet Web Server でサポートされているプラットフォームの概要を示しています。すべてのプラットフォームにおいて、64 MB のメモリと 150 MB のディスク容量が必要となります。
ベンダー
アーキテクチャ
オペレーティング システム
** SGI は独自の移植を行っており、Web サーバを別個に発売しています。
複数の iPlanet Web Server をインストールする場合は、自動インストールを使用して、セットアップ プログラムのプロンプトに対する応答のファイルを作成することができます。作成した install.inf ファイルを編集し、その後の iPlanet Web Server のインストールにこのファイルを使用することができます。自動インストールが最も効果を発揮するのは、標準インストールを使用し、すべてのインストールが同様である場合です。
Windows NT では、自動インストールは動作しません。
ノート
install.inf
ファイルには、Administration Server へのログオンに使用されるパスワードが含まれています。このパスワードは暗号化されていないプレーン
テキストです。自動インストールを使用する場合は、作業が完了した後に必ず install.inf
ファイルを削除してください。
[General]
FullMachineName= austen.iplanet.com
SuiteSpotUserID= annh
SuitespotGroup= staff
SecurityCheck= False
RequireDomain= False
ServerRoot= /usr/netscape/server4
Components= WebServer
[WebServer]
Upgrade= False
Reinstall= False
AdminPort= 8888
HttpPort= 1888
HttpDocRoot= /usr/netscape/server4/docs
AdminSysUser= annh
AdminName= admin
AdminPassword= password
UgLdapUse= Yes
UgLdapUrl= ldap://test:389/o=siroe.com
UgLdapName= cn=Directory Manager
UgLdapPassword= password
JRE_DIR= /usr/netscape/server4/bin/https/jre
USE_JDK= No
CompVersions= 2:2:1:2:0:0:0:0:0:
Components= nescore,JRE,java,cleanup
[cleanup]
Archive= cleanup.zip
次の表は、編集に役立つ一部の install.inf パラメータを示しています。最適な結果を得るには、この表に記載されているパラメータ以外は編集しないでください。
パラメータ名
説明/用途
iPlanet Web Server に付属の JRE をインストールする場合、JRE がインストールされるディレクトリ。
サーバを最初にインストールするときに一部のサブコンポーネントしかインストールされず、残りのサブコンポーネントを後でインストールすると、次の状況が発生します。
iPlanet Web Server と同じディレクトリに別の 4.x サーバ (たとえば、Netscape Directory Server や Messaging Server) をインストールする場合は、アンインストール時に次の手順に従ってください。
Netscape Directory Server または Messaging Server と iPlanet Web Server を両方とも同じマシンにインストールする場合は、Web サーバのインストール時にどのバージョンのライブラリをインストールするかを尋ねられたら、system32\libplc.dll を除き、必ず最新バージョンのライブラリを選択してください。同じディレクトリに両方のサーバをインストールした場合は、サーバのアンインストール時に問題が発生することはありません。
さまざまなディレクトリにサーバをインストールする場合は、次の手順に示すように、まず、アンインストール前に DLL ファイルのコピーを作成してから iPlanet Web Server をアンインストールします。
[暗号化のプリファレンス] ページのデフォルトの暗号化設定値は、magnus.conf ファイルの実際の設定値を正しく反映していない場合があります。
この問題を修正するには、[暗号化のプリファレンス] ページに移動し、使用する符号化方式を選択し、[保存して適用] をクリックして magnus.conf の設定値を更新します。
問題 388306。iPlanet Web Server 4.1 サブコンポーネントのインストール
サーバを最初にインストールするときに一部のサブコンポーネントしかインストールせず、その後、他のサブコンポーネントに依存するサブコンポーネントをインストールし、インストーラを再実行すると、インストールされたサブコンポーネントが依存するサブコンポーネントが、実際はインストールされているにもかかわらずインストールされていないものとして表示される場合があります。
たとえば、JRE コンポーネントとサーバサイド JavaScript データベース コンポーネントをインストールした場合、次にインストーラを実行したときに、Java、Servlet、およびサーバサイド JavaScript のサブコンポーネントはインストールされていないものとして表示されます。しかし、サーバサイド JavaScript データベース コンポーネントはこれらのサブコンポーネントに依存するため、実際、これらのサブコンポーネントは既にインストールされています。
問題 409342。NT 上で ES 4.1 SP 2 を古いサーバ インスタンスに上書きするとエラー
メッセージが表示される。
NT 上で、ES4.1sp2 を古いサーバ インスタンスに上書きする形でインストールしようとすると、インストール プログラムによって、最初に古い設定ディレクトリを削除しなければならないというメッセージが表示されます。
Web サーバを NT からアンインストールすると、「いくつかのファイルを削除できない」というエラー メッセージが表示され、システムから一部のファイルを削除することができません。
問題 385770 (Unix)。バージョン 4.1 にアップグレードした後、アンインストール時にバージョン
4.0 の古いサーバ ファイルが削除されない。
Unix では、iPlanet Web Server をバージョン 4.0 から 4.1 にアップグレードした後に、バージョン 4.0 のサーバをアンインストールしても、この古いバージョンにのみ存在するファイルはアンインストールされません。この問題は、iPlanet Web Server のアップグレード後にアンインストールした場合にのみ発生し、インストール後にアンインストールした場合は発生しません。
古いバージョンのサーバをアンインストールした後、次のファイルが存在する場合は手作業で削除します。
/bin/https/admin/html/index.lst
/bin/https/admin/html/rmhttp.html
/bin/https/admin/html/sec-activate.properties
/bin/https/admin/html/sec-mgcrt.html
/bin/https/admin/html/status.html
/bin/https/httpadmin/bin/nsesvars
/bin/https/httpadmin/html/index.lst
/bin/https/httpadmin/html/nsesvars.html
/bin/https/httpadmin/html/sec-mgcrt.html
/bin/https/httpadmin/html/sitemon.html
/bin/https/install/misc/de/index.def
/bin/https/install/misc/es/index.def
/bin/https/install/misc/fr/index.def
/bin/https/install/misc/ja/inxex.def
/bin/https/jar/jsp.jar
/bin/https/jar/NSServletTools.jar
/bin/https/jar/swingall.jar
/bin/https/jar/xm14j_1_1_9.jar
/bin/https/lib/libadminutil.so
/manual/https/nsapi/00-prefa.htm
/manual/https/nsapi/bklast.htm
/manual/https/pg/bklast.htm
/manual/https/servlets/2-examp.htm
/manual/https/servlets/bklast.htm
/manual/https/servlets/g-apifix.htm
/manual/https/servlets/jsp092/images/banner.gif
/manual/https/servlets/jsp092/images/beancycle.jpg
/manual/https/servlets/jsp092/images/beans.jpg
/manual/https/servlets/jsp092/images/constructor-index.gif
/manual/https/servlets/jsp092/images/contructors.gif
/manual/https/servlets/jsp092/images/method-index.gif
/manual/https/servlets/jsp092/images/methods.gif
/manual/https/servlets/jsp092/images/pagecycle2.jpg
/manual/https/servlets/jsp092/images/red-ball-small.gif
/manual/https/servlets/jsp092/images/red-ball.gif
/manual/https/servlets/jsp092/images/scenario2.jpg
/manual/https/servlets/jsp092/images/smi.logo.gif
/manual/https/servlets/jsp092/images/yellow-ball-small.gif
/manual/https/servlets/jsp092/images/yellow-ball.gif
/manual/https/servlets/jsp092/jsp092.html
/plugins/lib/libnsrwdb.so
/plugins/lib/libnsrwdb2.so
/plugins/lib/libnsrwifx.so
/plugins/lib/libnsrwora.so
/plugins/lib/libnsrwsyb.so
/plugins/samples/js/oldvideo/*
/plugins/samples/servlets/edemo/*
/plugins/samples/servlets/jsp/*
/wai/*
iPlanet Web Server 4.1 SP リリースを、既存の iPlanet Web Server 4.1 に上書きする形でインストールすると、Web パブリッシングが無効になります。
iPlanet Web Server 4.0 からアップグレードし、独自の JDK を使用する場合は、server_root/https-admserv にある start-jvm ファイルを編集する必要があります。これには、次の情報を追加します。コードの 2 行目は、start-jvm 内に 1 行で追加する必要があるので注意してください。
NSES_JDK=path_to_jdk; export NSES_JDK
NSES_JDK_RUNTIME_CLASSPATH=${NSES_JRE}/lib/ext/iiimp.jar:${NSES_JRE}/lib/i18n.jar :${NSES_JRE}/lib/rt.jar:${NSES_JRE}/lib/tools.jar:${NSES_JDK}/lib/dt.jar;export NSES_JDK_RUNTIME_CLASSPATH
問題 384875。4.0 から 4.1 への WAI コンポーネントのアップグレード
iPlanet Web Server をバージョン 4.0 から 4.1 にアップグレードし、WAI がインストールされていると、WAI コンポーネントのアップグレード時に次のエラー メッセージが表示されます。
ERROR: ORB directory not specified in installation script [/var/tmp/aaasuaW9b] ERROR. Failure installing WAI support. Do you want to continue [n]?
続行するには、「y」と入力します。エラー メッセージが表示されても、WAI コンポーネントは正常にインストールされます。
問題 387718。iPlanet Web Server 4.1 サーバへのアップグレード時に、res
ディレクトリ、cjava.properties および sjava.properties ファイルが追加されない。
NT 上で iPlanet Web Server をアップグレードした場合、サーバ インスタンス内に res ディレクトリとその内容が存在しません。
server_root/https-instance/config/res ディレクトリを作成し、次に cjava.properties と sjava.properties という名前の ASCII ファイルを作成します。これらのファイルの内容は次のようにする必要があります。
# C++
messages
servlets.src.nsapi.ERR_JVM_LOAD = Failure to load JVM (check your JRE)
servlets.src.nsapi.ERR_UTILITY_CLASSES = Internal error: Unable to initialize
utility classes
servlets.src.nsapi.ERR_CLASS_LOOKUP = Internal error: Unable to locate class:
%s
servlets.src.nsapi.ERR_METHODS_LOOKUP = Internal error: Unable to find required
methods in Java classes
servlets.src.nsapi.ERR_REGISTER_METHODS = Internal error: Failure registering
native methods for the JVM
servlets.src.nsapi.ERR_OBJECT_CREATE = Internal error: Unable to create Java
object: %s
servlets.src.nsapi.ERR_OBJECTS_CREATE = Internal error: Unable to create one
or more Java objects (possibly running out of heap)
servlets.src.nsapi.ERR_NATIVE_THREAD = One or more NSServlet functions were
not configured to be running on a native thread (check your obj.conf)
servlets.src.nsapi.ERR_NAMETRANS = Object name is missing in NameTrans (check
your obj.conf)
servlets.src.nsapi.ERR_SERVLETS_MKDIR = Unable to create directory %s (required
by the servlet subsystem)
servlets.src.nsapi.ERR_JSPCACHE_CLEANUP = Unable to create/cleanup jsp class
cache
servlets.src.nsapi.ERR_OUTOFMEMORY = Internal error: unable to allocate space
from pool (%s)
servlets.src.nsapi.ERR_SEMCREATE = Internal error: failure to create semaphores
servlets.src.nsapi.ERR_SESSIONCACHE_CLEANUP = Unable to create/cleanup persistent
session data cache
util.src.ERR_EXCEPTION = Internal error: Unexpected Java exception thrown (%s,%s),
stack: %s
util.src.ERR_FINDTHROWABLE = Internal error: unable to locate: %s
jvm.src.ERR_JVM_ATTACH = Internal error: Unable to attach to the JVM
jvm.src.ERR_JVM_DETACH = Internal error: Unable to detach from the JVM
jvm.src.ERR_JVM_READCFGFILE = Error reading JVM config file (%s)
jvm.src.ERR_JVM_EXITING = Exiting JVM
jvm.src.ERR_JVM_ABORTING = Aborting JVM
jvm.src.ERR_JVM_EXITING_ON_ABORT = Exiting JVM due to: jvm_abort () and jvm.exitOnAbort
> 0
jvm.src.ERR_JVM_EXITING_ON_LOOP = Exiting JVM due to: infinite loop detected
in the JVM signal handler
jvm.src.ERR_JVM_CLASSPATH = JVM ClassPath=%s
jvm.src.ERR_JVM_BADPROFILER = Unknown profiler: %s
jvm.src.ERR_JVM_BADPARAM = JVM config: unrecognized parameter (%s)
jvm.src.ERR_JVM_SINGLEPROCESS = No profiling or debugging is allowed in multi-process
mode (disabled)
jvm.src.ERR_JVM_PROFILERCLASS = Unable to locate OptimizeIT Audit class
jvm.src.ERR_JVM_PROFILERMETHODS = Unable to locate OptimizeIT Audit class methods
jvm.src.ERR_JVM_PROFILERSTART = Attempt to start OptimizeIT failed (exception:
%s,%s)
jvm.src.ERR_JVM_PROFILERSTARTED = OptimizeIT profiler lanched
jvm.src.ERR_JVM_DIFFCONFIG = JVM config: Use configuration file properties to
specify this parameter (%s)
jvm.src.ERR_JVM_CREATE = Internal error: unable to create JVM
jvm.src.ERR_JVM_EXISTS = JVM instance has already been created within the process,
numVMs=%d
jvm.src.ERR_JVM_EXIT_STATISTICS = JVM exit statistics: AttachedThreads/Max=%u/%u,
ActiveThreads/Max=%u/%u
# Server-side
Java properties (primarely may be used for internationalization)
servlet.NSServletEntity.msg_unable2findClass = Unable to locate class: %1 (%2)
servlet.NSServletEntity.msg_exceptionInitFunc = Internal error: unexpected exception
thrown from the servlet init function (servlet class=%1): %2, Stack: %3
servlet.NSServletEntity.msg_exceptionNewInstance = Internal error: newInstance
failed (servlet class=%1): %2
servlet.NSServletEntity.msg_exceptionInitThrown = Internal error: servlet init
function had trown ServletException (servlet class=%1): %2
servlet.NSServletEntity.msg_jspCompileFailed = JSP compilation error: %1, stack:
%2
servlet.NSServletEntity.msg_recompilingJSPFile = recompiling JSP file: %1
servlet.NSServletWrapper.msg_exceptionDestroyFunc = Internal error: unexpected
exception thrown from the servlet destroy function (servlet class=%1): %2, Stack:
%3
servlet.NSServletRunner.msg_wrongSeviceFuncParam = Internal error: service function
recieved wrong parameters
servlet.NSServletRunner.msg_exceptionServiceFunc = Internal error: exception
thrown from the servlet service function (uri=%1): %2, Stack: %3
servlet.NSServletRunner.msg_missingObjectType = Internal error: ObjectType is
missing
servlet.NSServletRunner.msg_wrongObjectType = Internal error: ObjectType has
incorrect value - magnus-internal/servlet|jsp expected
servlet.NSServletRunner.msg_infoLoadServet = Internal Info: loading servlet
%1
servlet.NSServletRunner.msg_exceptionInitFunc = Internal error: exception thrown
from the servlet init function (servlet=%1): %2
servlet.NSServletRunner.msg_exceptionClassNotFound = Internal error: Class %1
not found (servlet=%2):
servlet.NSServletRunner.msg_exceptionLoadServletFailed = Internal error: Failed
to load servlet (servlet=%1)
servlet.NSServletRunner.msg_exceptionFindClassName = Internal error: Could not
figure out the class name (uri=%1, SCRIPT_NAME=%2)
servlet.NSServletRunner.msg_exceptionFindContext = Internal error: Could not
find specifed servlet context (context=%1)
servlet.NSServletRunner.msg_exceptionGetServlet = Internal error: Failed to
get GenericServlet. (uri=%1,SCRIPT_NAME=%2)
servlet.NSServletRunner.msg_unable2findServlet = Internal error: unable to locate
servlet (%1) by name (probably a configuration error)
servlet.NSServletRunner.msg_fileNotFound = requested file not found (uri=%1,
filename=%2)
servlet.NSServletRunner.msg_regexpMarkError = Bad regular expression: %1
servlet.NSServletRunner.msg_sessionMgrNotFound = SessionManager class not found
(%1): loading default one
servlet.NSServletRunner.msg_sessionMgrFailure = Unable to instatiate SessionManager
class (%1, exception=%2): initializing default one
servlet.NSServletLoader.msg_classSecurity = NSServletLoader: security violation
loading class (%1)
session.MMapSession.mgs_unable2Retrieve = Session Manager: unable to retrieve
the object (%1)
session.MMapSession.mgs_unable2Store = Session Manager: unable to store the
object (%1)
session.MMapSessionManager.msg_sessionType = MMapSessionManager: can manage
only MMapSessions
session.SimpleSessionManager.msg_limitReached = SimpleSessionManager: cannot
create a new session as the limit on maximum number of sessions has already
been reached: (%1)
session.SimpleSessionManager.msg_sessionType = SimpleSessionManager: can manage
only SimpleSessions
session.SimpleSessionManager.msg_maxSessionsNotValid = SimpleSessionManager:
maximum number of sessions should be an integral number; using a default value
(%1)
session.SimpleSessionManager.msg_timeoutNotValid = SimpleSessionManager: session
timeout value should be an integral number; using a default value (%1)
session.SimpleSessionManager.msg_simpleSessionManagerDefaultInit = SimpleSessionManager:
Default values for maximum number of sessions is %1 with a time out value of
%2 seconds
session.SimpleSessionManager.msg_simpleSessionManagerUnbindError = SimpleSessionManager:
Failed to call unbind method on an object bound to the session by name (%1)
due to %2
session.SimpleSessionManager.msg_simpleSessionManagerInit = SimpleSessionManager:
Maximum number of sessions (%1) with a time out value of (%2) seconds
session.JdbcSessionManager.msg_sessionType = JdbcSessionManager: can manage
only JdbcSessions
session.JdbcSessionManager.msg_timeoutNotValid = JdbcSessionManager: session
timeout value should be an integral number; using a default value (%1)
session.JdbcSessionManager.msg_poolNotValid = JdbcSessionManager: specified
pool (%1) size is not valid, will using default value
session.JdbcSessionManager.msg_jdbcSessionManagerInit = JdbcSessionManager:
initialized with timeOut=%1, url=%2, driver=%3
session.JdbcSessionManager.msg_jdbcSessionManagerFailed = JdbcSessionManager:
initialization failed: %1
session.JdbcSessionManager.msg_sessionsReaped = JdbcSessionManager: %1 session(s)
had expired and removed
session.JdbcSessionManager.msg_unable2Store = JdbcSessionManager: unable to
serialize the object (%1)
session.JdbcSessionManager.msg_unable2Retrieve = JdbcSessionManager: unable
to retrieve the object (%1)
session.JdbcSessionManager.msg_exceptionThrown = JdbcSessionManager: exception
occured while %1: session id=%2, exception: %3
servlet.NSRequestDispatcher.msg_invalidReqResClass = ServletRequest/Response
classes passed into RequestDispatcher must be NSHttpRequest/Response classes
servlet.NSRequestDispatcher.msg_includeFailed = RequestDispatcher: include call
failed
servlet.NSRequestDispatcher.msg_forwardFailed = RequestDispatcher: forward call
failed
servlet.NSServletAdmin.msg_badServlet = Config: servlet entry is incorrect or
incomplete (%1)
servlet.NSServletAdmin.msg_uknownServlet = Config: on-startup loaded servlet
does not exist (%1)
servlet.NSServletAdmin.msg_badAlias = Config: alias entry is incomplete or refers
to a non-existing servlet (%1)
jsp.JSPCompiler.msg_noSuchBuffer = Internal error: unable to find JSP buffer
%1
jsp.JSPCompiler.msg_compileError = Java/JSP compile error: %1
jsp.JSPCompiler.msg_javacNotThere = Java compiler or classpath is not set up
properly
jsp.JSP.msg_badScriptletTag = JSP parse error (line %1) - Incomplete scriptlet
tag
jsp.JSP.msg_badTagEnding = JSP parse error (line %1) - Incomplete tag ending
of %2
jsp.JSP.msg_compileError = Unknown compile error %1
jsp.JSP.msg_badLanguage = JSP parse error (line %1) - unknown language
jsp.JSPTree.msg_badTag = JSP parse error - %1 tag is invalid
jsp.JSPTree.msg_badSetterType = JSP parse error - invalid bean setter type
jsp.JSPTree.msg_unknownSSI = JSP parse error - unrecognized command in SSI statement:
%1
jsp.JSPTree.msg_unknownTagValue = JSP parse error - unrecognized value for %1
tag: %2
jsp.JSPTokenizer.msg_unexpectedEOF = JSP parse error - unexpected end of file
servlet.admin.Sam.msg_noNSHOME = NS_SERVER_HOME property must be defined!
servlet.admin.Sam.msg_badNSHOME = NS_SERVER_HOME is invalid!
servlet.admin.Sam.msg_noServers = No Enterprise Server instances found!
servlet.admin.Sam.msg_serverNotFound= Server not found (%1)
servlet.admin.Sam.msg_badParam = Bad or insufficient parameters to perform command
(%1)
servlet.admin.Sam.msg_notExists = Servlet was not found (%1)
servlet.admin.Sam.msg_alreadyExists = Servlet already exists (%1)
servlet.admin.Sam.msg_cannotCreate = Unable to create servlet (%1)
servlet.admin.Sam.msg_listServers = Available server instances:
servlet.admin.SamPanel.HEIGHT = 500
servlet.admin.SamPanel.WIDTH = 700
servlet.admin.SamPanel.title = Servlet Application Manager
servlet.admin.SamPanel.logoIcon = icons/enterprise.gif
servlet.admin.SamPanel.quitTitleMessage = Quiting Sam?
servlet.admin.SamPanel.quitMessage = Changes have been made\nSave?
servlet.admin.SamPanel.menu_File = File
servlet.admin.SamPanel.menu_FileKeey= f
servlet.admin.SamPanel.mb_About = About Sam ...
servlet.admin.SamPanel.mb_Exit = Exit
servlet.admin.SamPanel.mb_ExitKey = e
servlet.admin.ObjDirPanel.l_nsapiFunc = NSAPI function
servlet.admin.ObjDirPanel.b_apply = Apply
servlet.admin.ObjDirPanel.b_restore = Restore
servlet.admin.ObjDirPanel.b_remove = Remove
servlet.admin.ObjDirPanel.t_border = Arguments
servlet.admin.ServletPanel.l_servlet = Servlet
servlet.admin.ServletPanel.l_className = ClassName
servlet.admin.ServletPanel.l_classPath = ClassPath
servlet.admin.ServletPanel.cb_startup = load on startup
servlet.admin.ServletPanel.b_apply = Apply
servlet.admin.ServletPanel.b_restore = Restore
servlet.admin.ServletPanel.b_remove = Remove
servlet.admin.ServletPanel.b_browse = Browse
servlet.admin.ServletPanel.t_border = Initial Arguments
servlet.admin.ServletPanel.l_border = Aliases
servlet.admin.ServletPanel.fc_title = Choose ClassPath directory
servlet.admin.ServletConfigPanel.l_docRoot = Servlets docRoot
servlet.admin.ServletConfigPanel.l_reloadInterval = Reload Interval
servlet.admin.ServletConfigPanel.b_apply = Apply
servlet.admin.ServletConfigPanel.b_restore = Restore
問題 388075。iPlanet Web Server 4.1 へのアップグレード時に obj.conf
admin-check-admpw の設定が更新されない。
iPlanet Web Server をバージョン 4.1 にアップグレードすると、Administration Server の obj.conf ファイル内の admin-check-admpw 関数に final=false というパラメータが含められますが、これは、final=true である必要があります。この問題は、iPlanet Web Server をアップグレードした場合のみ発生し、インストールした場合は発生しません。
アップグレードした後、server_root/https-admserv/config/obj.conf ファイル内の admin-check-admpw 関数を編集して、final=false を final=true に変更します。
問題 388076。iPlanet Web Server 4.1 へのアップグレード時に、mime.types
ファイルが正しく更新されない。
iPlanet Web Server をバージョン 4.1 にアップグレードすると、Administration Server およびサーバ インスタンスの mime.types ファイル内の情報が欠落していたり、間違っていたりします。この問題は、iPlanet Web Server をアップグレードした場合のみ発生し、インストールした場合は発生しません。
アップグレードした後、server_root/https-admserv/config 内と server_root/https-instance/config 内にある mime.types ファイルを編集して、次の行を変更します。
type=application/x-pointplus exts=css
type=text/css
exts=css
type=image/x-icon exts=ico
問題 387908。アップグレード時に magnus.conf ファイルが変更されない。
iPlanet Web Server をバージョン 4.1 にアップグレードすると、Administration Server の magnus.conf ファイルから情報が欠落しています。この問題は、iPlanet Web Server をアップグレードした場合のみ発生し、インストールした場合は発生しません。
アップグレードした後、server_root/https-admserv/config/magnus.conf ファイル内に次の行が存在することと、この行に ${NSES_JRE_RUNTIME_LIBPATH} という部分が含まれていることを確認します。
ExtraPath server_root/bin/https/bin;${NSES_JRE_RUNTIME_LIBPATH}
次の行はオプションですが、設定することをお勧めします。この行により、Administration Server によって使用されるスレッドの数が制限されます。
暗号化をオンにしてサーバを移行し、[プリファレンス] タブにある [サーバ設定の表示] ボタンをクリックすると、次のメッセージが表示されます。
Internal Error. The administration server was unable to fulfil your request.
問題 393221。コンフィグレーション スタイルを正しく移行することができない。
Netscape Enterprise Server 3.6 から iPlanet Web Server 4.1 にコンフィグレーション スタイルを正しく移行することができません。移行した後に、コンフィグレーション スタイルの設定を再確認してください。次の行を変更します。
ObjectType fn=type-by-exp exp="*.(class|jar)" type=magnus-internal/servlet
ObjectType fn="force-type" type="magnus-internal/servlet"
この節では、サービス パック リリースで解決された問題について説明します。
iPlanet Web Server Enterprise Edition 4.1 SP5 では次のバグが修正されています。
iPlanet Web Server Enterprise Edition 4.1 SP4 では次のバグが修正されています。
iPlanet Web Server Enterprise Edition 4.1 SP3 では次のバグが修正されています。
iPlanet Web Server Enterprise Edition 4.1 SP2 では次のバグが修正されています。
iPlanet Web Server Enterprise Edition 4.1 SP1 では次のバグが修正されています。
この節では、このリリースの iPlanet Web Server Enterprise Edition 4.1 に関して判明している問題を示します。この節の情報は次の領域から構成されています。
Perl 5.6.x を利用した CGI を -w フラグ付きで実行すると、Web サーバによって次のようなエラー メッセージが返されます。
cgieng_scan_headers reports: the CGI program foo.pl did not produce a valid header (name without value: got line "can't ignore signal chld, forcing to default.")
Tru64 Unix 4.0d カーネルのバグによって、カーネルがクラッシュする
Tru64 Unix 4.0d カーネルには、Web サーバのファイル キャッシュへの負荷が大きくなると、カーネルをクラッシュさせるバグがあります。現在、パッチ キット 6 が 4.0d カーネルの最新版です。この問題は、今後の OS パッチ キットによって修正される予定です。
しばらくの間この問題を解消するには、/etc/sysconfigtab ファイルに次のエントリを追加し、システムを再起動します。
問題 44812 (Windows NT のみ)。 Windows NT iPlanet Web Server
が、リモートにマウントされたドライブ上のファイルを検出できない。
ローカルの NT システム上にリモートの Novell Netware または Windows NT ドライブをマウントし、ドライブにドライブ名を指定した場合、Web サーバを介してそのドライブのファイルにアクセスしようとすると、iPlanet Web Server は常に "Not Found" エラーを返します。この問題は、リモート ドライブを参照するようにドキュメント ルートまたは URL マッピングを設定しても発生します。
Windows NT 対応 iPlanet Web Server では、リモートにマウントされたボリューム上のドキュメント ディレクトリの処理が直接サポートされていません。ただし、判明しているいくつかの問題を認識していれば、通常は適切に対応することができます。
UNC (\\servername\path\ などの「統一命名規約」) パスはサポートされていません。使用するリモート ボリュームにドライブ文字をマッピングしないと、iPlanet Web Server はファイルを提供することができません。iPlanet Web Server に対してドライブ マッピングを設定する方法は次のとおりです。
net use X: \\servername\path\directoryname /persistent:yes
ここで、X: は使用するドライブ名です (現在使用中でなければどの文字でもかまいません)。\\servername\path\directoryname は、そのドライブ名としてマウントするディレクトリへの完全な UNC パスです。ドライブ マッピング ダイアログ内の [ログオン時に再接続する] チェックボックスがオンになっている場合は、ファイル マネージャまたは Windows エクスプローラからこのマッピングを設定することもできます。設定後、そのユーザ アカウントからログアウトすることができます。
これで、X: に対するドライブ マッピングを設定すると、X:\ 上のプライマリ ドキュメント ディレクトリを使用するように iPlanet Web Server に指示することができます。
この方法がすべての場合に適しているわけではありません。この方法で正常に機能しない場合は、ご使用のコンピュータのクライアント ネットワーキング ソフトウェアを最新バージョンにアップグレードしてください。具体的には、Microsoft ネットワーキング ソフトウェアを使用して Novell Netware ファイル サーバに接続している場合、正常に動作しないことがわかっています。代わりに Novell Netware クライアント ソフトウェアをインストールすると、問題が解決するようです。また、Windows ネットワーキングや PC-NFS によってマウントされたドライブを使用すると、正常に機能するようです。
上記のように、ネットワーク ボリュームの使用は iPlanet Web Server によって直接サポートされているわけではないため、サーバは、ファイルを確実に提供できないことがあります。
問題 381664。Administration Server UI では可変フォント サイズを処理することができない。
Administration Server UI のタブ付きヘッダでは、基本的に、フォントは特定のサイズにハードコードされます。ブラウザによって異なりますが、ほぼ 12〜18 ポイントで表示されます。フォントが小さすぎるか大きすぎる場合は、UI に表示上の問題が発生します。
問題 338917。cmd スクリプトに対して設定された環境変数を取得することができない。
obj.conf ファイルを使用すると、URL から実行されるか、またはパース HTML を介して実行される CGI に対して環境変数を設定することができます。ただし、サーバ側でコマンドを取り込むと、これらの環境変数は取得されません。
これらの変数を取得して shtml-init に渡すには、obj.conf ファイルに addCgiInitVars="yes" を追加します。たとえば、obj.conf ファイルに次のコードを追加するとします。
Init
fn="init-cgi" LateInit="yes" var1="xy" var2="ab"
Init fn="shtml_init" addCgiInitVars="yes"
この場合、cmd ディレクティブを使用して SHTML から実行されるすべてのコマンドには、var1="xy" と var2="ab" という環境変数が設定されます。
問題 385142。[セキュリティ] タブを委譲することができない。
[セキュリティ] タブを委譲することはできません。主管理者のみがセキュリティ設定を変更することができます。
問題 381644。Administration Server UI では可変フォント サイズを処理することができない。
Administration Server UI のタブ付きヘッダでは、フォントは特定のサイズにハードコードされます。ブラウザによって異なりますが、ほぼ 12〜18 ポイントで表示されます。フォントが小さすぎるか大きすぎると、UI の要素はバランスよく拡大または縮小されない場合があります。たとえば、フォントが大きすぎると、右端のタブを表示する右向き矢印が表示されないことがあります。
問題 382458 (Unix のみ)。 LD_LIBRARY_PATH にデータベース ライブラリのパスを設定する必要がある。
Linux で、iPlanet Web Server 4.1 を使用してデータベースに接続するには、LD_LIBRARY_PATH 環境変数がクライアント ライブラリ ディレクトリを参照する必要があります。たとえば、次のようにします (次のコードはすべて 1 行に収めます)。
setenv
LD_LIBRARY_PATH ${DB2PATH}/lib:${ORACLE_HOME}/lib:${INFORMIXDIR}/lib:
${INFORMIXDIR}/lib/esql:${SYBASE}/lib
問題 387590 (Linux、Solaris、および NT プラットフォームのみ)。符号化方式の設定がデフォルト値にリセットされる。
Administration Server のインターフェイスの「暗号化プリファレンス」ページで符号化方式の設定を変更し、[OK] ボタンをクリックしても、サーバを再起動すると、設定の変更内容が保存されません。
magnus.conf ファイルを編集して符号化方式の設定を変更します。詳細については、NSAPI プログラマ ガイドの付録「magnus.conf」の「セキュリティ」の節を参照してください。
問題 388625。サーバ ページのサンプルで Netscape の URL リンクが依然として使用されている。
docs ディレクトリにインストールされている一部のサンプル ページでは、iPlanet に関する iplanet.com/docs などの URL ではなく、Netscape に関する home.netscape.com などの URL が依然として使用されています。Netscape の URL の代わりに次の URL を使用してください。
http://docs.iplanet.com/docs/manuals/enterprise.html
問題 360250。品質フィードバック エージェント (トークバック) が動作しない。
FullSoft, Inc. 製の必須ライブラリは、まだ入手できていません。この機能は、Web Server の今後のリリースで再び使用できるようになります。
問題 386805。インストーラと Administration Server がベース DN 内のエラーを認識しない。
LDAP を有効にするときは、ベース DN 内でコロン (:) などの不正な文字を使用しないでください。Web Server 4.1 インストーラと Administration Server では、ベース DN 内の不正なシンタックスまたは文字の有無がチェックされません。
問題 384779。高度な検索アプレットによって可読テキストが打ち切られる。
利用可能なコレクションがない場合、高度な検索アプレットによって可読テキストが打ち切られます。実際のメッセージは "No search collections available." です。
問題 385149。[ユーザおよびグループ] タブを委譲すると、表示上の問題が発生する。
何も更新せずに [アクセス制御] ページを終了し、再びこのページを表示すると、上部フレーム内にある [ユーザおよびグループ] の後の情報がすべて失われます。ただし、generated.https-admserv.acl ファイルに保存された情報は変更されません。
問題 390064。[ドキュメント プリファレンス] ページ内の [ホームページ] フィールドが URL
を認識することができない。
サーバ マネージャの [コンテンツ管理] タブにある「ドキュメント プリファレンス」ページ内の [ホームページ] フィールドは URL を受け付けません。代わりに絶対パスを指定するか、プライマリ ドキュメント ディレクトリからの相対パスを指定する必要があります。
問題 394322 (HP-UX のみ)。シングル プロセス モードでの SSL のパフォーマンスが低い。
SSL のパフォーマンスに問題がある場合は、RqThrottleMinPerSocket 512 および MaxProcs X を magnus.conf ファイルに追加することをお勧めします。ここで、MaxProcs ステートメント内の X は、システムに搭載されている CPU 数よりも大きくなります。
問題 400714。Web Publisher アプレットと SSL
SSL モードでは、Web Publisher Java アプレットはサポートされていません。
問題 410728。複数の仮想サーバの IP アドレス作成後にサーバが正常にシャットダウンされない。
複数の仮想サーバの IP アドレスの追加後に初めてサーバをシャットダウンしようとすると、予想以上の時間がかかる場合があります。デフォルトでは、サーバのシャットダウンに失敗したというエラー メッセージが表示されます。サーバが実際のシャットダウンの過程にある場合、このメッセージは無視してください。その後シャットダウンを試行するとシャットダウン時間が長引くことはありません。
問題 416848。MaxProcs、LDAP SSL 、およびハードウェア アクセラレータを併用することができない。
ハードウェア アクセラレータをオンにしたたまま MaxProcs および LDAP SSL を設定すると、ハードウェア アクセラレータは子プロセスを処理することができません。
Servlet は iPlanet Web Server の「外部」にあるため、Web サーバのエラー ログにはエラーが出力されません。代わりに、Web サーバ プロセスの標準出力ファイルに直接出力されます。system.out.println() (または system.out オブジェクトを使用するメソッド) を使用した場合、Servlet からの出力は、Web サーバを起動したプロセスの STDERR に送られるので注意してください。また、指定された out オブジェクトは、実際にはサーバのエラー ログに正しく書き込まれるので注意してください。
したがって、たとえば、ターミナル ウィンドウから Web サーバを起動した場合、出力はターミナル ウィンドウに表示されます。標準出力をファイルに渡すには、標準の Unix ファイル リダイレクションを使用します (つまり、server_root/https-instance/start ファイルを変更します)。ServletContext.log メソッドを使用すると、エラー ログ ファイルに書き込むことができます。
複数のヘッダと、getHeaders を呼び出す Servlet
iPlanet Web Server 4.1 は、同じ名前によるリクエスト時に受信した複数のヘッダを、値がコンマで区切られた 1 つのヘッダにまとめます。その結果、getHeaders を呼び出す Servlet は常に、すべての値がコンマで区切られた 1 つの文字列を含んでいる列挙体を返します。
Servlet セッションに使用されるセッション ID ジェネレータでは、暗号強度の高い独自の乱数生成アルゴリズムが採用されています。このため、旧型の低速マシンではパフォーマンス上の問題が発生することがあります。セッション マネージャ API (SimpleSessionManager.java の例を参照) を使用すると、ランダム ID 生成メソッドを再定義し、このメソッドを特定のニーズに合わせてカスタマイズすることができます。
問題 387702。Servlet による設定後にコンテンツの長さが 0 に設定される。
Servlet が HttpServletResponse.setContentLength メソッドを使用して、クライアントに送信されるデータの長さを伝達しても、実際にデータを送信しないと、Web サーバによってコンテンツの長さが 0 にリセットされます。
問題 390226。セッションの有効期限を設定することができない。
setMaxInactiveInterval メソッドを使用すると、セッションを無効にできません。
servlets.properties コンフィグレーション ファイル内でセッションの有効期限を設定します。例は次のとおりです。
servlets.sessionmgr=com.netscape.server.http.session.YourSesMgr
servlets.sessionmgr.initArgs=maxSessions=20,timeOut=300,reapInterval=150
問題 395924。rules.properties 内で正規表現を使用して、拡張子で終わるすべての
URI を指定の Servlet にリダイレクトしようとしても、効率よく機能しない。
Web Server は rules.properties ファイル内の正規表現をサポートしており、受信した URL が正規表現に一致すると、指定の Servlet を実行します。
# Servlet
rules properties (autogenerated)
# This file specifies the translation rules for invoking servlets.
# The syntax is:
#
# <virtual-path>=<servlet-name>
# or
# @regular_expression=<servlet-name> (use double back-slashes)
#
# Example:
#
# /simple=SimpleServlet\n
# @.*\\.foo=wasp
ここで、"\\" 文字は "." 拡張子をエスケープすることになっています。その目的は、/my/xxx.foo などの URL に対するリクエストが行われるたびに、サンプルの wasp Servlet を実行することです。Web Server 4.1 には、"/" または "\" を "/" に置き換えて全体的な意味を変えてしまうという欠陥があります。
次のように "/" または "\" を使用せずに正規表現を指定します。
問題 398424 (Windows NT のみ)。sdk_test.bat/sdk_test.sh
サンプルをコンパイルできない場合がある。
Windows NT プラットフォームで、sdk_test.bat を使用すると、サンプルを正常にコンパイルできない場合があります。javac を使用してコードを手動でコンパイルするには、readme.html 内の指示に従います。
問題 450189。chroot と Servlet が有効になっている場合にサーバを起動することができない。
Servlet がデフォルト構成で有効になっている場合、Web Server で一度 chroot が有効になると、起動することができません。Servlet を削除すると、サーバは起動し、ページの提供が開始されます。
問題 398234。JVM が、jvm.オプション設定値からシステム環境変数を取らない。
jvm12.conf ファイルまたは Administration Server 内で jvm.option 設定値を使用して JVM 環境変数を定義すると、Servlet はそれらを認識しません。
独立したコマンドラインの java プログラムを実行する場合は、次のオプションを使用してシステム プロパティを java プログラムに渡します。
java -Dorg.omg.CORBA.ORBClass=com.inprise.vbroker.orb.ORB myprogram
myprogram.java ファイル内で、次の行は、上記で設定されたシステム プロパティを取得します。
System.out.println("org.omg.CORBA.ORBClass="+System.getProperty("org.omg.CORBA.ORBClass"));
iPlanet Web Server の Servlet でも同じ作業を行う場合は、jvm12.conf ファイル内で次の行を挿入する必要があります。
org.omg.CORBA.ORBClass=com.inprise.vbroker.orb.ORB
次のような jvm.option 設定は使用しないでください。
jvm.option=-Dorg.omg.CORBA.ORBClass=com.inprise.vbroker.orb.ORB
jvm.option=org.omg.CORBA.ORBClass=com.inprise.vbroker.orb.ORB
Servlet または JSP で、次の行を使用すると、上記で設定したシステム プロパティを取得することができます。
out.println("org.omg.CORBA.ORBClass="+System.getProperty("org.omg.CORBA.ORBClass"));
set-virtual-index と呼ばれる新しいPathCheck 関数は、ディレクトリの仮想インデックスを指定し、これによって URL の転送が決定されます。このインデックスは、LiveWire アプリケーション、独自のネームスペース内の Servlet、Netscape Application Server の Applogic などを参照することができます。
from パラメータ内にリストされている URI が現在の URI に一致しない場合は、REQ_NOACTION が返されます。virtual-index パラメータによって指定されたファイルが存在しないか、現在の URI が見つからない場合は、REQ_ABORTED が返されます。from パラメータ内に記載されているいずれかの URI に現在の URI が一致するか、from パラメータがない場合は、REQ_RESTART が返されます。
パラメータ
説明
この virtual-index
に該当する URI のコンマ区切りリスト (オプション)。from が指定されていないと、virtual-index
は常に適用されます。
問題 385457 (Windows NT)。マルチプロセス モードがサポートされていない。
Windows NT では、マルチプロセス モードがサポートされていません。つまり、magnus.conf ファイル内のMaxProcs ディレクティブは 1 よりも大きい値を持つことができません。詳細については、NSAPI プログラマ ガイドの付録「magnus.conf」を参照してください。
Administration Server またはサーバ マネージャの [プリファレンス] タブにある「暗号化のオン/オフ」ページで、デフォルト設定のまま暗号化をオンに切り替え、[保存して適用] をクリックし、パスワードを入力すると、次のエラー メッセージが表示される場合があります。
Commit.exe
Application error
the instruction at "0x780001146" referenced memory at "0x00661006d".
The memory could not be "written".
Click OK to terminate the application.
Success! Your changes have been saved.
このメッセージが表示された後、[プリファレンス] タブ上の「シャットダウン」ページまたは「サーバのオン/オフ」ページに移動するか、[サービス] コントロール パネルに移動して、サーバが再起動されたことを確認する必要があります。
問題 389276 (Solaris)。ハードウエア トークンにサーバ証明書を追加すると、サーバが、内部証明書の
DB パスワードを求めてくる。
SSL を持つサーバ インスタンスを作成し、ハードウェア トークンに証明書を保存した場合は、そのサーバ インスタンスを起動するときに、nCipher パスワードと内部ソフトウェア パスワードの両方の入力を要求されることがあります。どちらのパスワードを入力してもサーバは起動しません。エラー ログには次の行が記録されます。
test-kra#
./start
test-kra# [22/Mar/2000:15:26:03] info ( 2614): successful server startup
[22/Mar/2000:15:26:03] info ( 2614): iPlanet-WebServer-Enterprise/4.1 BB1-03/06/2000
00:55
[22/Mar/2000:15:26:03] failure ( 2614): NSS initialization failed: -8174
(test|production).acme.com など、正規表現を含んでいる証明書を要求しようとすると、証明書が拒否されることがあります。
問題 386677 (Linux、Solaris、および Windows NT のみ)。サーバの暗号化をオンに切り替えたときに表示されるメッセージにタイプミスがある。
新しいサーバ証明書をインストールし、Administration Server の [暗号化を有効 : はい] 設定によって暗号化を有効にすると、Web Server によって次の情報が表示されます。
Warning:
Security changes require shutdown
In order for your changes to take effect, you will need to shutdown the
HTTP server, and then start it up again from the console in order to enter
the keyfile password. After you have started up the server again, your
server's url will be http://nocturne.netscape.com:9000 instead of
http://nocturne.netscape.com:9000
最初の URL は https://nocturne.netscape.com:9000 にする必要があるので注意してください。
問題 387226。クライアント認証に関するセッション キャッシュの問題
magnus.conf ファイルの SSLCacheEntries ディレクティブに関する次の情報に注意してください。
サーバ上で SSL が有効になっている場合、Windows NT プラットフォームで設定を変更して [保存して適用] をクリックすると、"システム エラー : パスワードが一致しません" というエラー メッセージが Web Server に表示されます。
Administration Server の右上にある [保存] ボタンと [適用] ボタンをクリックします。
Linux で LiveWire を使用して Sybase サーバに接続する場合、その接続に失敗すると、Web サーバがクラッシュします。サーバがクラッシュする理由は、LANG および LC_ALL 環境変数の値が locales.dat ファイル内の値に一致しないためです。
回避策 : ${SYBASE}/locales/locales.dat ファイルを修正して、希望のロケールのエントリを設定します。たとえば、LANG=en_US と LC_ALL=en_US のどちらかまたは両方を設定する場合は、locales.dat 内の [linux] セクションに次のエントリを追加します。
locale = en_US, us_english, iso_1
問題 385237 (Linux のみ)。データベースが不安定
Linux プラットフォームでは、高負荷状態で LiveWire を実行すると、Informix を除くすべてのデータベースで問題が発生する場合があります。
問題 394712。ユーザが Servlet 内から CGI 変数にアクセスすることができない。
Servlet の HttpServletRequest インターフェイスから内部の getCgiVariable() 機能にアクセスすることはできません。アクセスしようとすると、サーバによって次のコンパイル エラーが表示されます。
WASPServlet.java:269:
Method getCgiVariable(java.lang.String) not found in
interface javax.servlet.http.HttpServletRequest.
String cgiVar = req.getCgiVariable("PATH_TRANSLATED");
^
Note: WASPServlet.java uses or overrides a deprecated API. Recompile with
"-deprecation" for details.
1 error, 1 warning
この節では、次のプラットフォームに関するプラットフォーム固有の判明している問題と回避策について説明します。
Linux プラットフォームでは、iPlanet Web Server Enterprise Edition 4.1 は Web Publisher 機能と検索機能をサポートしていません。
Linux でのマルチスレッド データベース アプリケーションのサポート
Oracle Client SDK バージョン 8.0.5 と DB2 Client SDK バージョン 6.1 では、マルチスレッド データベース アプリケーションがサポートされています。
問題 382457。Sybase との接続に失敗すると Web サーバがクラッシュする
Linux で LiveWire を使用して Sybase サーバに接続する場合、その接続に失敗すると Web サーバがクラッシュします。サーバがクラッシュする理由は、LANG および LC_ALL 環境変数の値が locales.dat ファイル内の値に一致しないためです。
${SYBASE}/locales/locales.dat ファイルを修正して、希望のロケールのエントリを設定します。たとえば、LANG=en_US または LC_ALL=en_US のどちらかあるいは両方を設定する場合は、locales.dat 内の [linux] セクションに次のエントリを追加します。
locale = en_US, us_english, iso_1
問題 382458。LD_LIBRARY_PATH にデータベース ライブラリのパスを設定する必要がある。
Linux で、iPlanet Web Server 4.1 を使用してデータベースに接続するには、LD_LIBRARY_PATH 環境変数がクライアント ライブラリ ディレクトリを参照する必要があります。たとえば、次のようにします (次のコードはすべて 1 行に収めます。)
setenv
LD_LIBRARY_PATH ${DB2PATH}/lib:${ORACLE_HOME}/lib:${INFORMIXDIR}
/lib:${INFORMIXDIR}/lib/esql:${SYBASE}/lib
Linux プラットフォームでは、高負荷状態で LiveWire を実行すると、Informix を除くすべてのデータベースで問題が発生する場合があります。
問題 391820。.pl 拡張子の Perl スクリプトでエラーが発生する。
.pl 拡張子の Perl スクリプトに特定の mime.type の xappliciation がある場合、.pl 拡張子の Perl スクリプトでエラーが発生します。
この問題は、.pl 拡張子の Perl スクリプト内の xapplication の mime.type 拡張子をコメントアウトすることによって解決することができます。
Solaris 7 を使用する場合、正しいパッチ クラスタを使用しないとサーバの安定性が低下することがあります。
Solaris パッチ クラスタ 106541-12 をインストールします。
Administration Server で SSL2 のみを有効にし、Administration Server を停止して起動すると、サーバにアクセスできなくなります。サーバは正常に起動しているように見え、エラー ログにもエラーは記録されませんが、サーバにアクセスすることはできません。
問題 394322 (HP-UX のみ)。シングル プロセス モードでの SSL のパフォーマンスが低い。
SSL のパフォーマンスに問題がある場合は、RqThrottleMinPerSocket 512 および MaxProcs X を magnus.conf ファイルに追加することをお勧めします。ここで、MaxProcs ステートメント内の X は、システムに搭載されている CPU 数よりも大きくなります。
JDK を使用している場合、http://www.ibm.com/java/jdk/aix/index.html からバージョン 1.2.2 をダウンロードしたり、ca122-20000726 以降を更新してください。Java サポートは、インストールと同時に正常に機能するようになります。ただし、Servlet および JSP 処理時にサーバがハングした場合は、次の行が正しく設定されているかどうかをチェックしてください。
(server_root/https-admserv/config/jvm12.conf ファイル内)
問題 392232 (IBM AIX のみ)。 sdk_test.sh によるエラー発生
このバージョンの AIX は $JAVA_HOME/bin/java を直接実行することはできません。その代わり、bin/java を起動する前に正しい環境を設定する $JAVA_HOME/sh/java ラッパー スクリプトが含まれています。nsj ユーティリティが $JAVA_HOME/bin/java を直接使用するため、sdk_test.sh を実行すると、エラーが表示されます。
server_root/plugins/samples/servlets に移動し、次のように、nsj を java ラッパー スクリプトに置き換えて sdk_test.sh スクリプトを編集します。
# ${NS_HTTPS_HOME}/bin/nsj
\
# com.netscape.server.http.examples.tools.HttpGetTest \
# -H ${HOST} -p ${HTTP_PORT} -f /servlet/${servlet}.class
/usr/java_dev2/jre/sh/java -classpath tools/SDKTools.jar \
com.netscape.server.http.examples.tools.HttpGetTest \
-H ${HOST} -p ${HTTP_PORT} -f /servlet/${servlet}.class
ローカルの NT システム上にリモートの Novell Netware または Windows NT ドライブをマウントし、ドライブにドライブ名を指定すると、Web サーバを介してそのドライブのファイルにアクセスしようとすると、iPlanet Web Server は常に "Not Found" エラーを返します。この問題は、リモート ドライブを参照するようにドキュメント ルートまたは URL マッピングを設定しても発生します。
一般的な問題の「判明している問題と対処方法」で説明されている回避策を参照してください。
問題 385457。マルチプロセス モードがサポートされていない。
Windows NT では、マルチプロセス モードはサポートされていません。つまり、magnus.conf ファイル内の MaxProcs ディレクティブは 1 よりも大きい値を持つことができません。詳細については、NSAPI プログラマ ガイドの付録「magnus.conf」を参照してください。
Servlet に渡されるパラメータ内に非 ASCII 文字を含めると、問題が発生する場合があります。
contexts.properties ファイル内の context.global.parameterEncoding プロパティを正しく設定します。Servlet が ServletRequest.getParameter メソッドを使用する場合は、parameterEncoding を auto に設定し、次の指示に従ってください。
context.global.parameterEncoding プロパティを使用すると、Servlet パラメータの文字エンコード法を調べることができます。このプロパティには次のオプションがあります。
Servlet が ServletRequest.getParameter メソッドを使用して、非 UTF-8 文字を持つフォーム フィールド内の値を取得する場合は、contexts.properties ファイル内で parameterEncoding プロパティを auto (デフォルト) に設定する必要があります。それ以外に設定すると、getParameter メソッドによって取得された値はゼロまたは未定義になります。
データが URL 符号化されると、フォーム フィールドへのデータの入力に使用された元のエンコード法が失われるため、次のことを行う必要があります。
res.setContentType("text/plain; charset=Shift_JIS");
JSP では、次の例のように page ディレクティブを使用してレスポンス コンテンツ タイプを設定します。
<%@ page contentType="text/html; charset=gb2312"%>
ValiCert Web Server Validator は、CRL チェックなどの自動証明書確認機能を iPlanet Web Server Enterprise Edition に追加する NSAPI プラグインです。この製品を iPlanet Web Server Enterprise Edition に組み込むと、主要なすべての CA によって発行されたデジタル証明書の破棄ステータスの確認を行うことができます。この追加機能により、ユーザの証明書が紛失したり、盗まれたりした場合に発生する損害や不正からユーザを保護することができます。iPlanet Web Server Enterprise Edition 対応の ValiCert Web Server Validator には次のような特長があります。
ValiCert Web Server Validator は、iPlanet Web Server Enterprise Edition 4.1 の CD-ROM の /valicert というラベルの付いたディレクトリの下からダウンロードすることができます。Web Server Validator の詳細を参照したり、最新バージョンをダウンロードするには、http://www.valicert.net/netscape にアクセスしてください。
ご不明な点がある場合は、ValiCert テクニカル サポート support@valicert.com までお問い合わせください。
このプラグインを使用すると、サーバは特定のスレッド負荷条件が満たされた場合にプログラムを実行できるため、フロントエンドの負荷分散製品は負荷を再分散することができます。
ロード バランサをトリガして負荷を増減させるには、次の 2 つの方法を使用することができます。
標準 : キューに入っているリクエストの数に基づいて負荷を決定します。これは受動的な方法です。キューを満杯にすることによって、既に一部のリクエストを遅らせています。この場合は、HighThreshold を低い値にし、LowThreshold を高い値にする必要があります。
積極的 : プール内のアクティブなスレッドの数に基づいて負荷を決定します。この方法は、リクエストがキューに入れられる前に負荷を軽減できるように、より厳密にリクエストを制御することを目的としています。
Unix プラットフォームでは、モニタするプラグイン専用のスレッド プールを設定する必要があります。この作業は、管理画面でインスタンスを選択し、[スレッド プール] を選択することによって行うことができます。
必要な設定を行って、新しいスレッド プールを作成します。管理者ガイドでは、スレッド プールの作成方法と各設定値の意味について詳しく説明されています。ほとんどの場合、最小スレッド数と最大スレッド数を設定するだけで十分です。
スレッド プールを設定すると、server_root/https-instance/config/obj.conf ファイルに次の例のような例が追加されます。
Init name="sleep" MinThreads="1" MaxThreads="10" EarlyInit="yes" fn="thread-pool-init"
プラグインを有効にするには、obj.conf を手作業で次にように変更する必要があります。
Init fn="load-modules" funcs="init-resonate" shlib="server_root/bin/https/lib/libresonate.so"
Init fn="init-resonate" ThreadPool="sleep" EventExePath="/tools/ns/bin/perl5" LateInit="yes" CmdLow="/usr/netscape/ent41/plugins/loadbal/CmdLow.pl" CmdHigh="/usr/netscape/ent41/plugins/loadbal/CmdHigh.pl"
init-resonate 関数には次のパラメータを指定することができます。
このモジュールを読み込むときは、LateInit="yes"
と指定する必要があります。これは、このモジュールによって作成されるモニタリング スレッドは、ns-httpd
の起動後に起動する必要があるためです。
ノート
magnus.conf 内で LogVerbose on を設定すると、プラグインの設定内容や起動時刻に関する多くの情報がサーバによってエラー ログに記録されます。
[12/Jun/2000:09:36:35]
verbose (20685): Resonate plugin watching thread pool sleep
[12/Jun/2000:09:36:35] verbose (20685): Resonate plugin aggressive setting is
FALSE
[12/Jun/2000:09:36:35] verbose (20685): Resonate plugin poll time set to 2000
[12/Jun/2000:09:36:35] verbose (20685): Resonate plugin HighThreshold set to
5
[12/Jun/2000:09:36:35] verbose (20685): Resonate plugin LowThreshold set to
1
[12/Jun/2000:09:36:35] verbose (20685): Resonate plugin event executable path
set to /tools/ns/bin/perl5
[12/Jun/2000:09:36:35] verbose (20685): Resonate plugin low command set to /usr/netscape/ent41/plugins/loadbal/CmdLow.pl
[12/Jun/2000:09:36:35] verbose (20685): Resonate plugin high command set to
/usr/netscape/ent41/plugins/loadbal/CmdHigh.pl
LogVerbose on が設定され、プラグインが起動されたときのログ エントリの例は次のとおりです。
[12/Jun/2000:09:40:12]
verbose (20699): Resonate plugin reducing load.
[12/Jun/2000:09:40:14] verbose (20699): Resonate plugin reducing load.
[12/Jun/2000:09:40:16] verbose (20699): Resonate plugin reducing load.
[12/Jun/2000:09:40:18] verbose (20699): Resonate plugin reducing load.
[12/Jun/2000:09:40:20] verbose (20699): Resonate plugin reducing load.
[12/Jun/2000:09:40:30] verbose (20699): Resonate plugin increasing load.
ロード バランサを簡単にテストするには、NSAPI を使用して小さな HTML ページを出力し、ある期間に sleep() を呼び出すことによって実行時間をシミュレートします。この方法により、サーバに対する擬似負荷を生成し、ロード バランサ コマンドが正常に機能していることを確認することができます。
サンプル プログラムを設定するには、このプログラムがすべてのリクエストに対して実行されないように、新しい MIME タイプを追加する必要があります。config/mime.types を変更して次のような行を追加します。
type=magnus-internal/sleep exts=sleep
次に、.sleep という拡張子が付いたファイルを document-root ディレクトリ内に作成します。このフォルダはプレースホルダとして使用されるだけなので、どのような内容にすることもできます。
サーバにモジュールを読み込むには、次の行の shlib をライブラリの場所に変更して obj.conf に追加します。また、pool を先ほど定義したスレッド プールの名前に設定する必要があります。
Init fn="load-modules" funcs="dosleep" shlib="/usr/netscape/ent41/plugins/nsapi/examples/dosleep.so" pool="sleep"
その後、次の Service 行を他の行と同じ場所に追加します (どのような順序でもかまいません)。
Service method="(GET|HEAD)" fn="dosleep" duration="10" type="magnus-internal/sleep"
duration という引数は、リクエストごとに休止する時間を秒単位でサーバに指示します。
ここでサーバを起動すると、ロード バランサ プラグインのテスト準備は完了です。NSAPI は、負荷をシミュレートするのに必要な時間にわたってスレッドをビジー状態に保ちます。プラグインは、先ほど作成した .sleep ファイルを取得することによってテストされます。
magnus.conf 内で特別なことを行う必要はありません。プラグインに影響を与える設定値は LogVerbose on のみです。obj.conf の例は次のとおりです。
# Sun
Netscape Alliance - obj.conf
# You can edit this file, but comments and formatting changes
# might be lost when the admin server makes changes.
Init fn="flex-init" access="/usr/netscape/ent41/https-resonate/logs/access"
format.access="%Ses->client.ip% - %Req->vars.auth-user% [%SYSDATE%] \"%Req->reqpb.clf-request%\"
%Req->srvhdrs.clf-status% %Req->srvhdrs.content-length%"
Init fn="load-types" mime-types="mime.types"
Init fn="load-modules" funcs="init-resonate" shlib="/usr/netscape/ent41/bin/https/lib/libresonate.so"
Init name="sleep" MinThreads="1" MaxThreads="10" EarlyInit="yes" fn="thread-pool-init"
Init fn="init-resonate" ThreadPool="sleep" EventExePath="/tools/ns/bin/perl5"
LateInit="yes" CmdLow="/usr/netscape/ent41/plugins/loadbal/CmdLow.pl" CmdHigh="/usr/netscape/ent41/plugins/loadbal/CmdHigh.pl"
HighThreshold="2" LowThreshold="5"
Init fn="load-modules" funcs="dosleep" shlib="/usr/netscape/ent41/plugins/nsapi/examples/dosleep.so"
pool="sleep"
Init fn="load-modules" shlib="/usr/netscape/ent41/bin/https/lib/libNSServletPlugin.so"
funcs="NSServletEarlyInit,NSServletLateInit,NSServletNameTrans,NSServletService"
shlib_flags="(global|now)"
Init fn="NSServletEarlyInit" EarlyInit="yes"
Init fn="NSServletLateInit" LateInit="yes"
<Object name="default">
NameTrans fn="NSServletNameTrans" name="servlet"
NameTrans fn="pfx2dir" from="/servlet" dir="/usr/netscape/ent41/docs/servlet"
name="ServletByExt"
NameTrans fn="pfx2dir" from="/ns-icons" dir="/usr/netscape/ent41/ns-icons" name="es-internal"
NameTrans fn="pfx2dir" from="/mc-icons" dir="/usr/netscape/ent41/ns-icons" name="es-internal"
NameTrans fn="pfx2dir" from="/help" dir="/usr/netscape/ent41/manual/https/ug"
name="es-internal"
NameTrans fn="pfx2dir" from="/manual" dir="/usr/netscape/ent41/manual/https"
name="es-internal"
NameTrans fn="document-root" root="/usr/netscape/ent41/docs"
PathCheck fn="unix-uri-clean"
PathCheck fn="check-acl" acl="default"
PathCheck fn="find-pathinfo"
PathCheck fn="find-index" index-names="index.html,home.html"
ObjectType fn="type-by-extension"
ObjectType fn="force-type" type="text/plain"
Service method="(GET|HEAD)" fn="dosleep" duration="10" type="magnus-internal/sleep"
Service method="(GET|HEAD)" type="magnus-internal/imagemap" fn="imagemap"
Service method="(GET|HEAD)" type="magnus-internal/directory" fn="index-common"
Service method="(GET|HEAD|POST)" type="*~magnus-internal/*" fn="send-file"
AddLog fn="flex-log" name="access"
</Object>
<Object name="cgi">
ObjectType fn="force-type" type="magnus-internal/cgi"
Service fn="send-cgi"
</Object>
<Object name="servlet">
ObjectType fn="force-type" type="text/html"
Service fn="NSServletService"
</Object>
<Object name="jsp092">
ObjectType fn="type-by-extension"
ObjectType fn="change-type" type="magnus-internal/jsp092" if-type="magnus-internal/jsp"
Service fn="NSServletService" type="magnus-internal/jsp092"
</Object>
<Object name="ServletByExt">
ObjectType fn="force-type" type="magnus-internal/servlet"
Service type="magnus-internal/servlet" fn="NSServletService"
</Object>
<Object name="es-internal">
PathCheck fn="check-acl" acl="es-internal"
</Object>
<Object ppath="/usr/netscape/ent41/docs/.perf" 2=">">
Service fn="service-dump"
</Object>
#ifdef
XP_WIN32
#define NSAPI_PUBLIC __declspec(dllexport)
#else /* !XP_WIN32 */
#define NSAPI_PUBLIC
#endif /* !XP_WIN32 */
#include "nsapi.h"
#define BUFFER_SIZE 1024
#ifdef __cplusplus
extern "C"
#endif
NSAPI_PUBLIC int dosleep(pblock *pb, Session *sn, Request *rq)
{
char buf[BUFFER_SIZE];
int length, duration;
char *dur = pblock_findval("duration", pb);
if (!dur) {
log_error(LOG_WARN, "dosleep", sn, rq, "Value for duration is not set.");
return REQ_ABORTED;
}
duration = atoi(dur);
/* We need to get rid of the internal content type. */
param_free(pblock_remove("content-type", rq->srvhdrs));
pblock_nvinsert("content-type", "text/html", rq->srvhdrs);
protocol_status(sn, rq, PROTOCOL_OK, NULL);
/* get ready to send page */
protocol_start_response(sn, rq);
/* fill the buffer with our message */
length = util_snprintf(buf, BUFFER_SIZE, "<title>%s</title><h1>%s</h1>\n",
"Sleeping", "Sleeping");
length += util_snprintf(&buf[length], BUFFER_SIZE - length, "Sample NSAPI
that is sleeping for %d seconds...\n", duration);
/* write the message to the client */
if (net_write(sn->csd, buf, length) == IO_ERROR)
{
return REQ_EXIT;
}
sleep(duration);
return REQ_PROCEED;
}
次の節では、Linux および Solaris 8 で iPlanet Web Server Enterprise Edition 4.1 でサポートされているデータベース ベンダー クライアント ライブラリを示します。
次の表は、Linux で iPlanet Web Server Enterprise Edition 4.1 でサポートされているデータベース ベンダー クライアント ライブラリを示します。
データベース
サポートされているライブラリ
Linux プラットフォームでは、高負荷状態で LiveWire を実行すると、Informix を除くすべてのデータベースで問題が発生する場合があるので注意してください。
Linux でのマルチスレッド データベース アプリケーションのサポート
Oracle Client SDK バージョン 8.0.5 と DB2 Client SDK バージョン 6.1 では、マルチスレッド データベース アプリケーションがサポートされています。
次の表は、Solaris 8 で iPlanet Web Server Enterprise Edition 4.1 でサポートされているデータベース ベンダー クライアント ライブラリを示しています。
データベース
サポートされているライブラリ
ISV はデータベースの認証を後日行うことを約束しているため、これは Solaris 8 の制限です。
次の iPlanet Web Server Enterprise Edition 4.1 マニュアルの変更点に注意してください。
NSAPI プログラマ ガイドの第 4 章「カスタム SAF の作成」の表 4.1 で、CONTENT_LENGTH および CONTENT_TYPE CGI 変数を取得する NSAPI 関数は次のように訂正する必要があります。
新しい password.conf コンフィグレーション ファイルの情報
iPlanet Web Server の管理者ガイドの第 7 章「サーバのプリファレンスの設定」は更新され、新しい password.conf コンフィグレーション ファイルが含められました。製品内のオンライン バージョンまたは「サーバの起動と停止」を参照してください。
iPlanet Web Server の管理者ガイドの第 10 章「サーバの設定によるパフォーマンス チューニング」の「その他の obj.conf パラメータ」で、nostat パラメータについて説明された節では次のように記載されています。
オンライン ヘルプには、DNS キャッシュのサイズのデフォルト値が 1024 エントリであると記載されています。しかし、[プリファレンス] タブの下の「パフォーマンス チューニング」ページから DNS キャッシュを有効にすると、[DNS キャッシュのサイズ] フィールドに 512 と表示されます。
Performance, Tuning, Sizing, and Scaling Guide」と、管理者ガイドの章「Tuning Your Server for Performance」の節「RqThrottle について」で、obj.conf 内にタイムアウト時間を設定できると説明されていますが、これは間違いです。タイムアウト時間を調整するには、magnus.conf 内で AcceptTimout パラメータを使用してください。
Performance, Tuning, Sizing, and Scaling Guideと、管理者ガイドの章「サーバの設定によるパフォーマンス チューニング」で、perfdump を有効にする指示に間違いがあります。この指示では、obj.conf ファイルに次のオブジェクトを (デフォルト オブジェクトの後ろに) 追加すると説明されています。
<Object
ppath="/usr/netscape/server4/docs/.perf">
Service fn = "service-dump"
</Object>
上記では、行 Service fn = "service-dump" に間違いがあります。等号の前後にはスペースを空けないでください。正しい例は次のとおりです。
<Object
ppath="/usr/netscape/server4/docs/.perf">
Service fn="service-dump"
</Object>
magnus.conf のセキュリティ ディレクティブの廃止
NSAPI プログラマ ガイドの付録 Bで、ServerCert および ServerKey ディレクティブがリストされていますが、iPlanet Web Server 4.x では廃止されています。
magnus.conf におけるセキュリティ ディレクティブ CERTDefaultNickname
の省略
NSAPI プログラマ ガイドの付録 B で、CERTDefaultNickname ディレクティブが省略されています。このディレクティブの説明は次のとおりです。
iPlanet Web Server に問題がある場合は、次のいずれかの方法で iPlanet カスタマー サポートまでお問い合わせください。
サポートへのお問い合わせ時は次の情報を事前にご準備いただくと、問題解決がより迅速になる場合があります。
次の関連ニュース グループからニュースを購読することも一案です。次のニュース グループでは、iPlanet Web Server に関するトピックを扱っています。
次のサイトには貴重な iPlanet 情報が掲載されています。
iPlanet Web Server Enterprise Edition 4.1 のインストール手順については、インストールおよび移行ガイドを参照してください。
iPlanet Web Server Enterprise Edition 4.1 の管理者マニュアルについては、製品に組み込まれているオンライン ヘルプを参照してください。管理者ガイドと関連ドキュメントは、http://developer.iplanet.com/docs/manuals/enterprise.html にも掲載されています。
必要な情報が見つからない場合は、iPlanet テクニカル サポートまでお問い合わせください。
最終更新日 2000 年 12 月 6 日