3

次のような複雑なフォームの Web アプリケーションがあります。

  1. フィールド検証を実行し、
  2. 値を、次のページで解析しやすい入力形式 (配列) に変換します。
  3. ユーザーを次のページにリダイレクトします (データは URL で渡されます)
  4. 次のページでは、データをロードして計算を実行し、結果を表示します。

これはすべて Wicket でステートレスに行われます。私はこれをどのように行ったかについて考えていました。それは「正しい」とは感じません。配列への変換とリダイレクトは「機能」しますが、もっと良い方法が必要です。

更新
フォームがステートレスである理由:
問題の Web アプリケーションは、サーバーを他の 2 つの Web アプリケーションと共有しています。OutOfMemoryExceptionこのアプリケーションの新しいバージョンをデプロイした後、私は s に遭遇していました。フォームをステートレスに変換する前にTomcat Managerアプリケーションをチェックすると、約150または「アクティブなセッション」が定期的に表示されます。フォーム/結果ページがステートレスになったので、5 つの「アクティブなセッション」が表示されます。これにより、メモリ使用量が大幅に削減されました(と思います)。私はまだしつこい疑問を持っています:https://stackoverflow.com/questions/16049219/how-to-handle-a-hibernate-bi-directional-mapping-for-a-set-properly

提案:
「結果」ページのマウント ポイントを削除して、それをパネルに変換する必要があるのではないかと考え始めました。そうすれば、複雑なオブジェクトを直接渡すだけで、ページ全体をリフレッシュしてパネルを交換できます。ステートレスページでもそれは可能ですか?

POST
また、ウィケットが POST リダイレクトをネイティブにサポートしているとは思わない: How to use post method in wicket

4

1 に答える 1

1

をよく見ましたOutOfMemoryErrorか?通常、アプリケーションを再デプロイすると、ユーザー メモリではなく、permgen スペースが不足します。Permgen のスペース リークは非常に一般的であり、除去するのは困難です。おそらく、これは Wicket とは関係ありませんが、ロードされたままのクラスとは関係ありません。Java 8 (永続的な世代がない)、または新しいバージョンの Tomcat (および Wicket) を使用してみてください。これは、新しいバージョンのフレームワークとコンテナーでクラスローダー リークが解決されることが多いためです。

この記事も参照してください: Apache Tomcat のメモリ不足エラーの回避

于 2014-11-28T13:26:19.610 に答える