33

そのため、Websphere 7(JDK 6)で実行されるレガシーサーブレットコードを扱っています。開発環境のセットアップでは、Tomcat 6(JDK 6)を使用します。

  1. Tomcat6ではなくWebsphere7で機能するのはなぜですか?
  2. これはアプリケーションサーバーに関連するものですか?

あなたの答えが「はい」で「いいえ」の場合。2、コードを分解したり、動的インクルードを使用したりする以外に、Tomcat 6(JDK 6)でこれを回避する方法はありますか?

ほとんどのページがアプリのメインテンプレートを含むビジネスモデルコードと結合されているため、スケジュールは静的インクルードを動的インクルードに変更することに同意しません。

4

11 に答える 11

23

おそらくTomcatがJSPからクラスを構築する方法が原因で、 64kのメソッド制限に達しているようです。このページでは、静的インクルードを次のように変更することを提案しています。

<%@ include file="test.jsp" %>

この問題を回避するために、次のような動的インクルードを行います。

<jsp:include page="test.jsp" /> 
于 2011-03-30T09:30:49.127 に答える
21

外部化できる静的 html/jss/css ブロックを使い果たしましたjsp:include(ほとんどの非静的 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>

Peter Hart の<c:catch>ソリューションも良い選択肢のように思えます。

于 2011-06-29T17:36:57.150 に答える
13

次のリンクに記載されているように、変更する場所を直接指摘することをお勧めします: https://www.assetbank.co.uk/support/documentation/knowledge-base/byte-limit-exceeded-error/

[Tomcat_Home]/conf/web.xml ファイルを見つけて、「JspServlet」のファイルを検索します。<servlet>これにより、いくつかの値を含むxml ノードが返され<init-param>ます。<init-param>以下と同じものを追加する必要があります。

<init-param>
    <param-name>mappedfile</param-name>
    <param-value>false</param-value>
</init-param> 

これは、Tomcat ユーザーにとってより明確で直接的です。

もちろん、以前のコメントで主に述べた他の参照ソリューションですが、すべてを1か所で読むことができます。イットワーク/603017/

この問題は、JDK1.8 (Java8) を使用する tomcat-8 でも見つかりました。

于 2015-11-30T10:26:50.443 に答える
4

Standalone.xml の JBoss eap 6 の場合、web サブシステムの下に以下のコードを追加します。

<configuration>
    <jsp-configuration development="true" mapped-file="false"/>
</configuration>

それは私の問題を解決しました。

于 2015-05-26T07:21:21.057 に答える
4

JSP をインクルードに分割しても意味がない、または機能しない場合があります。コンパイル時に JSP を個別のメソッドに強制的に分割するもう 1 つの方法は、 を使用して JSP をセグメントに分割すること<c:catch>です。

于 2011-04-27T19:18:38.943 に答える
3

Tomcat 6 ではなく Websphere 7 で動作するのはなぜですか?

JSP を異なる Java コードに変換する JSP コンパイラが異なるためです。Tomcat JSP コンパイラ (Jasper) は明らかに大きな JSP を処理できません。

おそらく次の質問は、JVM のメソッド サイズ制限を変更することは可能かということです。

いいえ。これらの制限は、クラス ファイルの形式/構造に組み込まれています。

詳細はJVM仕様にあります...しかし、かなり複雑で、あなたの質問からどの制限に達したかは完全には明らかではありません。(しかし、それは重要ではありません...変更することはできません。)

于 2011-03-30T09:57:48.053 に答える
2

今日、この問題に出くわしまし
た。Tomcat 8.0.39 の代わりに Tomcat 8.0.30 を使用したため、問題は解決しました。

于 2017-01-12T15:53:30.793 に答える
1

初期化パラメータ「mappedFile」を「false」に設定すると、うまくいきました。

しかし、Eclipse プラグインを使用すると、削除され、Tomcat ホームに再度設定する必要があります。

于 2014-05-28T06:19:10.290 に答える
1

Eidt: 与えられた解決策は解決策ではありませんでしたが、誤解 (Tomcat のすべてのバージョンで問題を再現できない) がありました。

于 2016-10-26T09:06:49.257 に答える
0

wildfly サーバーの場合、standalone.xml -> undertow サブシステム内: jsp-config を次のように置き換えます。

<jsp-config development="true" mapped-file="false"/>
于 2016-08-18T10:06:09.400 に答える