我目前正在我的 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 应用程序服务器。