2

jsp カスタム タグを使用する Web アプリがあります。Weblogic 10 と Tomcat 6 の両方で実行しています。一部のタグは Tomcat では機能しません。エラーの原因は、次の Weblogic と Tomcat の違いにあることがわかりました。

Weblogic では、jsp 内でタグが出現するたびに、jsp カスタム タグのコンストラクタが呼び出されます。Tomcat では、タグが jsp ページで何度使用されても、jsp カスタム タグのコンストラクターは、タグが最初に出現したときに 1 回だけ呼び出されます。

したがって、Tomcat では、jsp カスタム タグにいくつかのオプションの属性があったため、その後のタグの呼び出しでは、以前の呼び出しで割り当てられた値が再利用されていました。Weblogic では、タグのコンストラクターは出現ごとに呼び出されたため、jsp ページ内でタグが出現するたびにタグがデフォルト値に初期化されていました。

jspページでjspカスタムタグが検出されるたびにTomcatに新しいTagオブジェクトをインスタンス化するように指示する方法を(tomcat構成ファイルエントリ、web.xmlエントリなどを介して)知っている人はいますか?

4

1 に答える 1

3

サーブレット コンテナは、(Java サーブレット仕様に従って) タグ インスタンスをプールする場合としない場合があります。問題を解決する最善の方法は、おそらくタグの記述方法を修正することです。あなたの場合、おそらくメソッドでクリーンアップ(オプションのパラメータをnullに設定)することになるでしょうdoEndTag()

それが不可能な場合は、これを Tomcat インストールの .xml に配置して、Tomcat でのタグ プーリングを無効にすることができますconf/web.xml

 <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        (...)
        <init-param>
            <param-name>enablePooling</param-name>
            <param-value>false</param-value>
        </init-param>
        (...)
 </servlet>
于 2012-08-22T17:57:17.420 に答える