We generally map HTTP 400, 500, and 404 to an error handler action via the
web.xml like so...
<error-page>
<error-code>500</error-code>
<location>/Error.do</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/InvalidUrl.do</location>
</error-page>
<error-page>
<error-code>400</error-code>
<location>/InvalidUrl.do</location>
</error-page>
--Norm
--
Norm Deane
MIS Consultant
Vanderbilt University
(615) 322-7855
[EMAIL PROTECTED]
> -----Original Message-----
> From: Matthew J. Vincent [mailto:[EMAIL PROTECTED]
> Sent: Monday, January 12, 2004 10:08 AM
> To: Struts Users Mailing List
> Subject: Generic Error Handler
>
>
> I searched the archives and I must have missed it. I want to
> have a generic JSP or Servlet get invoked when an error
> occurs in my application. For example, when I try to clink
> on a link on one of my pages I get an error
> message:
>
> HTTP Status 500 - No action instance for path /detailSearch
> could be created
>
> Looking at the logs it is obvious why there is an error
> (because I didn't create the
> org.jax.mgi.mtb.wi.actions.DetailSearchAction class). What
> is the best approach to handle this type of error? I tried
> adding the following to my struts-config.xml, but it is not
> going to the appError.jsp page.
>
> <global-exceptions>
> <exception key="system.error"
> type="java.lang.Exception"
> path="/appError.jsp"/>
>
> <exception key="system.error"
> type="java.lang.ClassNotFoundException"
> path="/appError.jsp"/>
>
> </global-exceptions>
>
> What is the best way to handle this? What about other types
> of errors? Is there a rule of thumb that everyone follows?
>
> Sorry for the hopefully easy (probably already asked) question.
>
> Matt
>
>
> Here is an output of the logs:
>
> SEVERE: No action instance for path /detailSearch could be created
> java.lang.ClassNotFoundException:
> org.jax.mgi.mtb.wi.actions.DetailSearchAction
> at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappC
> lassLoader.jav
> a:1366)
> at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappC
> lassLoader.jav
> a:1213)
> at
> org.apache.struts.util.RequestUtils.applicationClass(RequestUt
> ils.java:207)
> at
> org.apache.struts.util.RequestUtils.applicationInstance(Reques
> tUtils.java:23
> 1)
> at
> org.apache.struts.action.RequestProcessor.processActionCreate(
> RequestProcess
> or.java:326)
> at
> org.apache.struts.action.RequestProcessor.process(RequestProce
> ssor.java:268)
> at
> org.apache.struts.action.ActionServlet.process(ActionServlet.j
> ava:1482)
> at
> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
> er(Application
> FilterChain.j
> ava:284)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
> cationFilterCh
> ain.java:204)
>
> at
> org.jax.mgi.mtb.wi.filters.TimerFilter.doFilter(TimerFilter.java:23)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
> er(Application
> FilterChain.j
> ava:233)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
> cationFilterCh
> ain.java:204)
>
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardW
> rapperValve.ja
> va:256)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContex
> t.java:151)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:564)
> at
> org.apache.catalina.core.StandardContextValve.invokeInternal(S
> tandardContext
> Valve.java:24
> 5)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardC
> ontextValve.ja
> va:199)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContex
> t.java:151)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:564)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHost
> Valve.java:195
> )
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContex
> t.java:151)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport
> Valve.java:164
> )
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContex
> t.java:149)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:564)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEn
> gineValve.java
> :156)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(Stand
> ardValveContex
> t.java:151)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:564)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
> at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.
> java:211)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Process
> or.java:805)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandle
> r.processConne
> ction(Http11P
> rotocol.java:696)
> at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoi
> nt.java:605)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> ThreadPool.jav
> a:677)
> at java.lang.Thread.run(Thread.java:534)
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]