管理コンソールで Web コンテナのプロパティーを設定するには、「設定」>「config-name」>「Web コンテナ」を選択します。
セッションタイムアウトは、ユーザーがセッションを明示的に無効にしなかった場合にサーバーがそのセッションをどれだけの期間維持するかを決定します。デフォルトは 30 分です。アプリケーションの要件に応じてこの値を調整してください。セッションタイムアウトに非常に大きな値を設定すると、サーバーがセッションストア内に維持すべきセッションの数が多くなりすぎ、パフォーマンスが劣化する可能性があります。一方、非常に小さな値を設定すると、サーバーがセッションを回収するタイミングが早くなりすぎる可能性があります。
取得間隔を変更するとパフォーマンスが改善される可能性がありますが、使用するセッションやビジネスロジックの性質を考慮しないでこの値を設定すると、時間に基づく持続周期の場合は特に、データの不整合が発生する可能性があります。
たとえば、取得間隔を 60 秒に設定すると、セッションデータの値が 60 秒ごとに記録されます。このとき、クライアントが 20 秒ごとにサーブレットにアクセスして値を更新すると、不整合が発生します。
たとえば、次のようなオンラインオークションのシナリオを考えます。
入札が $5 から始まった場合、60 秒後に記録される値は $8 になります (20 秒間隔が 3 回)。
次の 40 秒で、クライアントが価格を増やし始めます。クライアントに表示される値は $10 になります。
クライアントの 20 秒の休憩の間に、Application Server が 10 秒で停止および起動します。その結果、60 秒間隔で記録された最新値 ($8) が、セッション内に読み込まれます。
クライアントは $11 が表示されるのを予期しながら再度クリックしますが、代わりに $9 が表示されます。これは間違っています。
したがって、データの不整合を避けるには、取得間隔の調整時にアプリケーションの予期される動作を考慮してください。
本番システムでは、Web コンテナのパフォーマンスを改善するために、JSP の動的再読み込みを無効にします。そうするには、インスタンスごとに config ディレクトリ内の default-web.xml ファイルを編集します。JSP ファイルのサーブレット定義を次のように変更してください。
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> ... <load-on-startup>3</load-on-startup> </servlet>