そこで、私はWebsphere 7(JDK 6)で実行されるレガシーサーブレットコードを扱っています。開発環境のセットアップでは、Tomcat 6(JDK 6)を使用します。
答えが「はい」である場合。 2、Tomcat 6(JDK 6)でこれを回避する方法はありますか?
スケジュールは、主にほとんどのページがアプリのメインテンプレートを含むビジネスモデルコードと連動しているため、静的インクルードを動的インクルードに変更することに同意しません。
おそらくTomcatがJSPからクラスを構築する方法が原因で、 64kメソッドの制限 に達しているように聞こえます。 このページ は、静的インクルードを次のように変更することを提案します。
<%@ include file="test.jsp" %>
問題を回避するためにこのような動的インクルードするには:
<jsp:include page="test.jsp" />
jsp:include
に外部化できる静的なhtml/jss/cssブロックを使い果たしました(ほとんどの場合、静的ではないhtmlが残っていました)...
web.xml
に入れて、mappedfileをfalseに設定して、インクルードに入れるのに必ずしも適切なブロックではないが、スペースを節約するために追加する多くの静的な行を取り除くことができます。
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.Apache.jasper.servlet.JspServlet</servlet-class>
...
<init-param>
<param-name>mappedfile</param-name>
<param-value>false</param-value>
</init-param>
...
</servlet>
ピーターハートの<c:catch>
ソリューションは、ニースオプションのようにも聞こえます。
次のリンクに記載されているように、変更する場所を直接指す方が良い: https://www.assetbank.co.uk/support/documentation/knowledge-base/byte-limit-exceeded-error/
ファイル[Tomcat_Home] /conf/web.xmlを見つけて、ファイルで「JspServlet」を検索します。これにより、いくつかの<servlet>
値を含む<init-param>
のxmlノードが返されます。以下と同じ<init-param>
を追加する必要があります。
<init-param>
<param-name>mappedfile</param-name>
<param-value>false</param-value>
</init-param>
これは、Tomcatユーザーにとってより明確で直接的です
もちろん、以前のコメントで主に述べたが、すべて一箇所で読むことができる他の参照ソリューションは、ここにあります: http://answered.site/development-environment-setup-uses-Tomcat-6-jdk-6- why-does-it-work/603017 /
この問題は、JDK1.8(Java8)を使用したTomcat-8でも見つかりました。
Standalone.xmlのJBoss eap 6の場合、webbサブシステムの下に以下のコードを追加します。
<configuration>
<jsp-configuration development="true" mapped-file="false"/>
</configuration>
それは私の問題を解決しました。
JSPをインクルードに分割することは、意味をなさないか、機能しないことがあります。コンパイル時にJSPを個別のメソッドに強制的に分割する別の方法は、<c:catch>
を使用してJSPをセグメントに分割することです。
Tomcat 6ではなくWebsphere 7で動作する理由
JSPを異なるJavaコードに変換する異なるJSPコンパイラーがあるため。TomcatJSPコンパイラー(Jasper)は、明らかに大規模なJSPを処理できません。
おそらく次の質問は、JVMのメソッドサイズ制限を変更することは可能ですか?
いいえ。これらの制限は、クラスファイルの形式/構造に組み込まれています。
詳細は JVM仕様 にありますが、それはかなり複雑で、どの制限にぶつかったのかが質問から完全に明確ではありません。 (しかし、それは重要ではありません...変更することはできません。)
初期化パラメータ「mappedFile」を「false」に設定することで、私にとってはうまくいきました。
しかし、Eclipseプラグインを使用すると、削除されるため、Tomcatホームで再度設定する必要があります。
今日この問題に出くわしました
Tomcat 8.0.39の代わりにTomcat 8.0.30を使用して問題が解決しました。
Eidt:与えられた解決策は解決策ではありませんでしたが、誤った解釈(すべてのTomcatバージョンで問題を再現することはできません)申し訳ありません。
Wildflyサーバーの場合、standalone.xml-> undertowサブシステム内:jsp-configで置き換えます
<jsp-config development="true" mapped-file="false"/>