Sun Java System Application Server Platform Edition 9 リリースノート

Web コンテナ

ここでは、Web コンテナに関する既知の問題とその解決方法を示します。

空の <load-on-startup/> 要素を持つ Servlet 2.4 ベースの web.xml を使用して WAR を配備できない。(ID 6172006)

web.xml のオプションの load-on-startup 要素は、サーブレットを宣言する Web アプリケーションの起動の一環として、そのサーブレットをロードおよび初期化すべきことを示します。


注 –

この制限は、Servlet 2.4 ベースの web.xml だけに適用されます。Servlet 2.5 ベースの web.xml を使用して、空の load-on-startup 要素を指定することは可能です。


この要素のオプションの内容は、Web アプリケーションのその他のサーブレットとの関係で、そのサーブレットをロードおよび初期化する順序を示す整数です。空の <load-on-startup/> は、そのサーブレットを含む Web アプリケーションの起動時にそのサーブレットがロードおよび初期化される場合、その順序は意味を持たないことを表します。

web.xml の Servlet 2.4 スキーマでは、空の <load-on-startup/> はサポートされなくなりました。つまり、Servlet 2.4 ベースの web.xml を使用する場合は整数値を指定する必要があります。<load-on-startup/> の場合と同様に、空の <load-on-startup/> を指定すると、web.xmlweb.xml のサーブレット 2.4 スキーマに対する妥当性検証に失敗するため、Web アプリケーションの配備も失敗します。

下位互換性の問題もあります。空の <load-on-startup/> は、Servlet 2.3 ベースの web.xml では有効です。

解決方法

Servlet 2.4 ベースの web.xml を使用する場合は、<load-on-startup/>0</load-on-startup/> を指定して、サーブレットの読み込み順序が問題にならないことを示します。

リソースに制約のあるサーバー上で JSP ページをコンパイルできない。(ID 6184122)

JSP ページにアクセスしてもコンパイルに失敗し、サーバーログには「Unable to execute command」というエラーメッセージと次のスタックトレースが記録されます。

at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec
(Execute.java:655) at org.apache.tools.ant.taskdefs.Execute.launch
(Execute.java:416) at org.apache.tools.ant.taskdefs.Execute.execute
(Execute.java:427) at org.apache.tools.ant.taskdefs.compilers.
DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.
java:448) at org.apache.tools.ant.taskdefs.compilers.JavacExternal.
execute(JavacExternal.java:81) at org.apache.tools.ant.taskdefs.Javac.
compile(Javac.java:842) at org.apache.tools.ant.taskdefs.Javac.execute
(Javac.java:682) at org.apache.jasper.compiler.Compiler.generateClass
(Compiler.java:396)

解決方法

JSP のコンパイルスイッチを fork から false に設定します。

これは、次のいずれかの方法で行えます。

これらのいずれかを設定することにより、antjavac コンパイルのための新規プロセスを生成することが防止されます。

ParserUtils が Web アプリケーションからのパーサーを選択する (ID 6412405)

JSP にアクセスすると、特定の状況下で次の例外が記録されます。


java.lang.AbstractMethodError: org.apache.xerces.dom.DeferredDocumentImpl.
setDocumentURI(Ljava/lang/String;)V

解決方法

次のシステムプロパティーを domain.xml ファイルに追加してください。


<jvm-options>-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces. \
internal.jaxp.DocumentBuilderFactoryImpl</jvm-options>

または、org.apache.xerces パッケージを含む JAR ファイルを、Web アプリケーションの WEB-INF/lib から削除します。

EAR バンドル JAR に TLD がない。(Glassfish の問題 590)

EAR ファイルにバンドルされた JAR パック JSP タグライブラリは、EAR の一部である WAR ファイルの JSP ページから参照できません。WAR ファイルの META-INF/MANIFEST.MF リソースが、その Class-Path マニフェスト属性でタグライブラリ JAR ファイルをリストしている場合でも参照できません。

EAR ファイルの JAR ファイルにパッケージされたタグライブラリをインポートする JSP ページにアクセスすると、次のようなエラーメッセージがサーバーログに表示され、JSP ページのコンパイルが失敗します。


The absolute uri: <taglib_uri> cannot be resolved in either web.xml or 
the jar files deployed with this application

解決方法

すべての JSP タグライブラリ JAR ファイルを、これらのタブライブラリをインポートする JSP ページを持つすべての WAR ファイルの WEB-INF/lib ディレクトリにバンドルしてください。

このバグに関する詳細については、https://glassfish.dev.java.net/issues/show_bug.cgi?id=590 の Glassfish のサイトを参照してください。