2

全て -

ColdFusion で 500 JRun サーブレット エラーを処理する方法はありますか? ColdFusion admin でサイト全体のハンドラーを使用したり使用したりしてみcferrorましたが、機能していないようです。

ここにエラーメッセージがあります

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)
4

1 に答える 1

4

表示されているエラーは JRun レベルで発生しています。このタイプのエラーは、ColdFusion エラー ハンドラがトラップする前に発生します。JRun レベルでエラー ハンドラを作成して割り当てる必要があります。これは、web.xml ファイルを編集することで実現できます。(変更を行った後、JRun サーバーを再起動する必要があります。)

詳細は、このページ、JRun 4 プログラマー ガイド - サーブレット プログラミング テクニック - 例外の処理 を参照してください。

error-pageWEB-INF/web.xml ファイルの要素を使用して、Web アプリケーションがエラーを処理する方法を定義できます。error-pageSERVER-INF/default-web.xml ファイルに要素を追加することで、JRun サーバー上のすべての Web アプリケーションのエラー処理を定義することもできます。

HTTP エラー コードの処理

web.xml ファイルの のerror-codeサブ要素はerror-page、JRun がサーブレットの処理中に生成された 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

エラー属性へのアクセス

HttpServletRequestおよびオブジェクトはエラー情報へのHttpServletResponseアクセスを提供するため、意味のあるデバッグ情報またはターゲットを絞った例外ハンドラーを生成できます。詳細と例については、上記のリンクを参照してください。

JRun は、エラーがスローされると、リクエスト オブジェクトにいくつかの属性を設定します。次に、これらの属性について説明します。

  • javax.servlet.error.status_code- 該当する場合、HTTP エラー コードを int オブジェクトとして定義します。サーブレットが HTTP に関係のない例外をスローした場合、ステータス コードは通常 500 (Internal Server Error) に設定されます。
  • javax.servlet.error.message- 例外またはエラー メッセージを返します。
  • javax.servlet.error.exception_type- 例外のタイプを定義します。
  • javax.servlet.error.exception- スローされる実際の例外を定義します。printStackTrace メソッドを使用して、例外のスタック トレースを表示できます。
  • javax.servlet.error.request_uri- 例外がスローされる前にリクエスト URI を定義します。
于 2013-03-20T12:31:31.650 に答える