0

I have the following configuration in my web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">

    <display-name>tycoon-sa</display-name>

    <context-param>
        <param-name>br.com.caelum.vraptor.encoding</param-name>
        <param-value>UTF-8</param-value>
    </context-param>

    <error-page>
        <location>/</location>
    </error-page>

    <filter>
        <filter-name>vraptor</filter-name>
        <filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>vraptor</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
</web-app>

My goal is to redirect the user to the main page in case of exceptions or error codes (404, 500, etc). But it's not working. I've tried to access an invalid URL and I was not redirected. The application throws a NullPointerException. Here's the stack trace:

SEVERE: Servlet.service() for servlet default threw exception  
java.lang.NullPointerException  
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:321)  
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
    at br.com.caelum.vraptor.resource.DefaultResourceNotFoundHandler.couldntFind(DefaultResourceNotFoundHandler.java:41)  
    at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:71)  
    at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)  
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)  
    at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)  
    at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)  
    at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)  
    at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)  
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)  
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:489)  
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)  
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)  
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:456)  
    at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:327)  
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:193)  
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)  
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)  
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)  
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)  
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)  
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)  
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)  
    at java.lang.Thread.run(Unknown Source)  

Abr 02, 2013 11:04:32 AM org.apache.catalina.core.StandardHostValve custom  
SEVERE: Exception Processing ErrorPage[errorCode=0, location=/]  
java.lang.NullPointerException  
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:321)  
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
    at br.com.caelum.vraptor.resource.DefaultResourceNotFoundHandler.couldntFind(DefaultResourceNotFoundHandler.java:41)  
    at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:71)  
    at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)  
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)  
    at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)  
    at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)  
    at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)  
    at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)  
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)  
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:489)  
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)  
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)  
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:456)  
    at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:327)  
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:193)  
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)  
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)  
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)  
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)  
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)  
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)  
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)  
    at java.lang.Thread.run(Unknown Source)  

Any clues?

3 Answers3

1

this is the way to configure a default error page for all the errors

<error-page>
<location>/whateverpage.html</location>
</error-page>

Remember this will only work if you are using Servlet 3.0. if you are still using Servlet 2.5 then you will have to specify each and every error code.

<error-page>
<error-code>404</error-code>
<location>/notfound.html</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/general-error.html</location>
</error-page>
Shurmajee
  • 1,027
  • 3
  • 12
  • 35
0

error-page can not rediect invalid url .If you want to do that you can use apache server and write following

RewriteEngine on    
Redirect /--xyz-75/ http://www.domain.com.au/
Biswajit
  • 2,434
  • 2
  • 28
  • 35
0

Specify the error code in your error page tag 404 /ErrorPage.jsp

Vasu
  • 149
  • 7
  • I'm not using error code tag. You don't need this tag on Servlet 3.0 if you want to catch any error code: http://stackoverflow.com/questions/7066192/specify-the-default-error-page-in-web-xml-in-servlet – Guto Marrara Marzagao Apr 01 '13 at 06:47