在 ORBEON 4.1 中非常奇怪的 session expired 错误处理...当使用 DEV 模式时,我们得到纯文本错误页面
+----------------------------------------------------------------------------------------------------------------------+
|An Error has Occurred |
|----------------------------------------------------------------------------------------------------------------------|
|Session has expired. Unable to process incoming request. |
|----------------------------------------------------------------------------------------------------------------------|
|Application Call Stack |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/ops/xforms/xforms-server-submit.xpl | 72| 51|executing processor |
|oxf:/ops/pfc/xforms-xml-submission.xpl | 50| 46|executing processor |
|----------------------------------------------------------------------------------------------------------------------|
|Exception: org.orbeon.oxf.common.OXFException |
|----------------------------------------------------------------------------------------------------------------------|
|org.orbeon.oxf.xforms.state.XFormsStateManager |extractParameters |XFormsStateManager.java | 403|
|org.orbeon.oxf.xforms.processor.XFormsServer |doIt |XFormsServer.java | 152|
|org.orbeon.oxf.xforms.processor.XFormsServer |start |XFormsServer.java | 100|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|run |PipelineProcessor.java | 617|
|----------------------------------------------------------------------------------------------------------------------|
|Exception: org.orbeon.oxf.common.ValidationException |
|----------------------------------------------------------------------------------------------------------------------|
|org.orbeon.oxf.common.ValidationException |wrapException |ValidationException.java | 126|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|run |PipelineProcessor.java | 619|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|executeChildren |PipelineProcessor.java | 679|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|start |PipelineProcessor.java | 614|
|org.orbeon.oxf.processor.pipeline.choose.ConcreteCh|start |ConcreteChooseProcessor.java | 248|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|run |PipelineProcessor.java | 617|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|executeChildren |PipelineProcessor.java | 679|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|start |PipelineProcessor.java | 614|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|run |PipelineProcessor.java | 617|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|executeChildren |PipelineProcessor.java | 679|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|start |PipelineProcessor.java | 614|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|getInput |PipelineProcessor.java | 140|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|readImpl |PipelineProcessor.java | 83|
|org.orbeon.oxf.processor.impl.ProcessorOutputImpl$T|read |ProcessorOutputImpl.java | 258|
|org.orbeon.oxf.processor.impl.ProcessorOutputImpl |read |ProcessorOutputImpl.java | 404|
|org.orbeon.oxf.processor.pipeline.choose.ConcreteCh|readImpl |ConcreteChooseProcessor.java | 127|
|org.orbeon.oxf.processor.impl.ProcessorOutputImpl$T|read |ProcessorOutputImpl.java | 258|
|org.orbeon.oxf.processor.impl.ProcessorOutputImpl |read |ProcessorOutputImpl.java | 404|
|org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |ProcessorImpl.java | 262|
|org.orbeon.oxf.processor.pipeline.PipelineProcessor|run |PipelineProcessor.java | 92|
|---8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<---|
|org.orbeon.oxf.webapp.ProcessorService |service |ProcessorService.scala | 40|
|org.orbeon.oxf.servlet.OrbeonServlet$$anonfun$servi|apply$mcV$sp |OrbeonServlet.scala | 74|
|org.orbeon.oxf.servlet.OrbeonServlet$$anonfun$servi|apply |OrbeonServlet.scala | 67|
|org.orbeon.oxf.servlet.OrbeonServlet$$anonfun$servi|apply |OrbeonServlet.scala | 67|
|org.orbeon.oxf.util.ScalaUtils$ |withRootException |ScalaUtils.scala | 118|
|org.orbeon.oxf.servlet.OrbeonServlet |service |OrbeonServlet.scala | 67|
|javax.servlet.http.HttpServlet |service |HttpServlet.java | 820|
|weblogic.servlet.internal.StubSecurityHelper$Servle|run |StubSecurityHelper.java | 227|
|weblogic.servlet.internal.StubSecurityHelper |invokeServlet |StubSecurityHelper.java | 125|
|weblogic.servlet.internal.ServletStubImpl |execute |ServletStubImpl.java | 300|
|weblogic.servlet.internal.ServletStubImpl |execute |ServletStubImpl.java | 183|
|weblogic.servlet.internal.WebAppServletContext$Serv|doIt |WebAppServletContext.java |3683|
|weblogic.servlet.internal.WebAppServletContext$Serv|run |WebAppServletContext.java |3650|
|weblogic.security.acl.internal.AuthenticatedSubject|doAs |AuthenticatedSubject.java | 321|
|weblogic.security.service.SecurityManager |runAs |SecurityManager.java | 121|
|weblogic.servlet.internal.WebAppServletContext |securedExecute |WebAppServletContext.java |2268|
|weblogic.servlet.internal.WebAppServletContext |execute |WebAppServletContext.java |2174|
|weblogic.servlet.internal.ServletRequestImpl |run |ServletRequestImpl.java |1446|
|weblogic.work.ExecuteThread |execute |ExecuteThread.java | 201|
|weblogic.work.ExecuteThread |run |ExecuteThread.java | 173|
+----------------------------------------------------------------------------------------------------------------------+
应该没问题(顺便说一下它在 DEV 模式下......),但是如果我们切换到 PROD 模式,用户就会得到简单的错误发生错误而没有错误详细信息。会话超时是非常常见的错误,我们需要向用户友好的页面展示如何操作。有什么办法吗?