現在、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アプリケーションサーバーを使用しています。