2013-03-19 27 views
1

全部 -在ColdFusion中處理500 JRun servlet

有沒有辦法在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) 
+0

如果在任何ColdFusion處理程序可以捕獲之前發生JRun錯誤,你能發佈實際的錯誤消息嗎? – 2013-03-19 18:34:11

+0

Miguel-F - 我編輯了我的問題與錯誤消息。 – fn79 2013-03-19 18:36:12

+0

你知道是什麼原因導致這個錯誤,只想知道是否有辦法解決它?還是你想知道是什麼導致了這個錯誤? – 2013-03-19 18:55:14

回答

3

您收到在水平的JRun發生的錯誤。這種類型的錯誤發生在ColdFusion錯誤處理程序可以捕獲它之前。您需要在JRun級別創建並分配錯誤處理程序。這可以通過編輯web.xml文件來完成。 (進行更改後,您需要重新啓動JRun服務器。)

詳細信息可在此頁面找到,JRun 4 Programmers Guide - Servlet Programming Techniques - Handling exceptions

您可以使用WEB-INF/web.xml文件中的error-page元素定義Web應用程序如何處理錯誤。您還可以通過將error-page元素添加到SERVER-INF/default-web.xml文件來爲JRun服務器上的所有Web應用程序定義錯誤處理。

處理HTTP錯誤代碼

在web.xml文件的error-code子元件的error-page定義的JRun如何處理一個servlet的處理過程中生成的HTTP錯誤代碼。

您爲error-code元素定義HTTP狀態碼,然後將代碼映射到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 

訪問錯誤屬性

HttpServletRequestHttpServletResponse對象提供對錯誤信息的訪問,以便您可以生成有意義的調試信息或目標excep處理程序。有關更多信息和示例,請參閱上面包含的鏈接。

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。
+0

謝謝米格爾。我在我的本地實例上覆制了錯誤,並通過更新default-web.xml文件來獲得自定義錯誤頁面。我不確定我們將如何處理prod版本(因爲我無法訪問這些文件),但我至少知道發生了什麼。 – fn79 2013-03-20 13:50:09

+0

要求服務器管理員以相同的方式添加自定義jrun錯誤頁面。 – Leigh 2013-03-20 13:53:03

+0

有誰知道503錯誤Jrun Servlet錯誤? – 2014-05-19 17:29:26