変更内容
JSPのカスタムタグについて、V1.1で以下の変更を行いました。
非互換
JSPアプリケーションの配備時にJSPカスタムタグの検証は行われません。
JSPカスタムタグにコンストラクタが定義されていても、JSPアプリケーションへのアクセスがあるまでコンストラクタ内の処理は実行されません。
JSPアプリケーションの配備時にJSPカスタムタグの検証が行われ、その定義内容に問題がある場合、サーバーログに下記のようなログメッセージが出力されます。
[2022-06-27T05:42:05.590+0000] [glassfish 7.0] [SEVERE] [] [org.glassfish.wasp.runtime.TldScanner] [tid: _ThreadID=71 _ThreadName=admin-listener(5)] [timeMillis: 1656308525590] [levelValue: 1000] [[ Error creating test.tag.MyClassicTag com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class: class test.tag.MyClassicTag (以下、スタックトレース) |
JSPカスタムタグにコンストラクタが定義されている場合、配備時(JSPカスタムタグの検証時)にコンストラクタ内の処理が実行されます。
対処法
サーバーログに前述のログメッセージが出力されている場合、当該JSPカスタムタグは正しく動作しない場合があります。ログメッセージに記載されているJSPカスタムタグの実装クラスについて、アプリケーションを見直してください。
また、本検証機能がJSPアプリケーションの期待動作を阻害する場合は、後述の例のように、JSPアプリケーションに含まれるweb.xmlへ本検証機能を無効化する下記オプションを追加してください。
パラメーター:org.glassfish.wasp.NO_JSPTAG_PRECREATE
指定値:true
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0"> <context-param> <param-name>org.glassfish.wasp.NO_JSPTAG_PRECREATE</param-name> <param-value>true</param-value> </context-param> </web-app> |