All -
有没有办法处理 ColdFusion 中的 500 JRun servlet 错误?我尝试使用cferror
以及在 ColdFusion 管理中使用站点范围的处理程序,但它似乎不起作用。
这是错误消息
500
ROOT CAUSE: java.lang.IllegalArgumentException at
coldfusion.filter.FormScope.parseName(FormScope.java:408) at
coldfusion.filter.FormScope.parseQueryString(FormScope.java:360) at
coldfusion.filter.FormScope.parsePostData(FormScope.java:328) at
coldfusion.filter.FormScope.fillForm(FormScope.java:278) at
coldfusion.filter.FusionContext.SymTab_initForRequest(FusionContext.java:438) at
coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:33) at
coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at
coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:126) at
coldfusion.CfmServlet.service(CfmServlet.java:200) at
coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at
jrun.servlet.FilterChain.doFilter(FilterChain.java:86) at
coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at
coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at
jrun.servlet.FilterChain.doFilter(FilterChain.java:94) at
jrun.servlet.FilterChain.service(FilterChain.java:101) at
jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) at
jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) at
jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) at
jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
javax.servlet.ServletException: ROOT CAUSE:
java.lang.IllegalArgumentException at
coldfusion.filter.FormScope.parseName(FormScope.java:408) at
coldfusion.filter.FormScope.parseQueryString(FormScope.java:360) at
coldfusion.filter.FormScope.parsePostData(FormScope.java:328) at
coldfusion.filter.FormScope.fillForm(FormScope.java:278) at
coldfusion.filter.FusionContext.SymTab_initForRequest(FusionContext.java:438) at
coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:33) at
coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at
coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:126) at
coldfusion.CfmServlet.service(CfmServlet.java:200) at
coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at
jrun.servlet.FilterChain.doFilter(FilterChain.java:86) at
coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at
coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at
jrun.servlet.FilterChain.doFilter(FilterChain.java:94) at
jrun.servlet.FilterChain.service(FilterChain.java:101) at
jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) at
jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) at
jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) at
jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) at
coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:70) at
coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at
jrun.servlet.FilterChain.doFilter(FilterChain.java:94) at
jrun.servlet.FilterChain.service(FilterChain.java:101) at
jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) at
jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) at
jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) at
jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
您收到的错误发生在 JRun 级别。此类错误在 ColdFusion 错误处理程序捕获之前发生。您需要在 JRun 级别创建并分配错误处理程序。这可以通过编辑 web.xml 文件来完成。 (进行更改后,您需要重新启动 JRun 服务器。)
详细信息可以在这个页面找到,JRun 4 程序员指南 - Servlet 编程技术 - 处理异常.
您可以使用以下方法定义 Web 应用程序如何处理错误error-page
WEB-INF/web.xml 文件中的元素。您还可以通过添加以下内容来定义 JRun 服务器上所有 Web 应用程序的错误处理error-page
元素添加到 SERVER-INF/default-web.xml 文件中。
处理 HTTP 错误代码
The error-code
的子元素error-page
web.xml 文件中的 定义 JRun 如何处理 servlet 处理过程中生成的 HTTP 错误代码。
您定义一个 HTTP 状态代码error-code
元素,然后将代码映射到location
元素。以下示例将 HTTP 500(内部服务器错误)状态代码映射到 servererror.jsp 页面:
<error-page>
<error-code>500</error-code>
<location>/error-pages/servererror.jsp</location>
</error-page>
下表列出了常见的与错误相关的 HTTP 状态代码:
HTTP error code Description
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
408 Request Time-out
500 Internal Server Error
访问错误属性
The HttpServletRequest
and HttpServletResponse
对象提供对错误信息的访问,以便您可以生成有意义的调试信息或目标异常处理程序。有关更多信息和示例,请参阅我上面包含的链接。
当抛出错误时,JRun 在请求对象上设置多个属性。下面描述了这些属性:
-
javax.servlet.error.status_code
- 将 HTTP 错误代码(如果适用)定义为 int 对象。如果 servlet 抛出与 HTTP 无关的异常,则状态代码通常设置为 500(内部服务器错误)。
-
javax.servlet.error.message
- 返回异常或错误消息。
-
javax.servlet.error.exception_type
- 定义异常的类型。
-
javax.servlet.error.exception
- 定义实际抛出的异常。您可以使用 printStackTrace 方法查看异常的堆栈跟踪。
-
javax.servlet.error.request_uri
- 定义抛出异常之前的请求 URI。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)