0

現在、Web アプリケーションで Quartz スケジューラを使用して、サーバーの実行後にタスクをスケジュールし、定期的に繰り返しています。
プロセスは開発サーバーで正常に実行されていますが、本番環境にデプロイすると問題ありませんが、例外が発生すると動作が停止することがあります。このスケジューリング プロセスが原因で例外が発生したのか、それとも別の理由があるのか​​はわかりません。
例外は、スケジューリングを開始する 2 ~ 3 分前に常に発生していました。

これがスタックトレースです。

java.lang.IllegalStateException: HttpSession is invalid
    at weblogic.servlet.internal.session.SessionData.getInternalAttribute(SessionData.java:690)
    at weblogic.servlet.internal.session.SessionData.getInternalAttribute(SessionData.java:685)
    at weblogic.servlet.internal.session.JDBCSessionData.dbRefresh(JDBCSessionData.java:428)
    at weblogic.servlet.internal.session.JDBCSessionData.getFromDB(JDBCSessionData.java:102)
    at weblogic.servlet.internal.session.JDBCSessionContext.getSessionDataFromDB(JDBCSessionContext.java:240)
    at weblogic.servlet.internal.session.JDBCSessionContext.getSessionInternal(JDBCSessionContext.java:220)
    at weblogic.servlet.internal.session.SessionContext$SessionInvalidator.cleanupExpiredSessions(SessionContext.java:938)
    at weblogic.servlet.internal.session.SessionContext$SessionInvalidator$1.run(SessionContext.java:894)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.session.SessionContext$SessionInvalidator.timerExpired(SessionContext.java:888)
    at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

とにかく、開発と本番の両方でWebLogicアプリケーションサーバーを使用しています。

4

1 に答える 1

1

これは、セッションから何かを読み取ろうとすると、セッションが無効になるために発生する可能性があります。ここでできることの 1 つは、構成ファイルのセッション タイムアウト エントリを確認することです。ほとんどの場合、セッション タイムアウト値を増やす必要があります。

于 2012-05-02T05:40:15.413 に答える