2015-09-09 1 views
0

Требования:Java + Vaadin + Обработка исключения кота с помощью web.xml

Я хочу, чтобы показать страницу ошибки, когда когда-либо мы получаем любое исключение (т.е. NullPointer, IndexOutOfBoundsException и т.д.) в консоли сервера.

Системные требования:

Мы используем Apache Tomcat 7.0.61, Maven 3.2.3, Spring и Vaadin 7 (для UI Framework).

Наш файл web.xml:

<context-param> 
.............. 
</context-param> 

<context-param> 
<param-name>contextClass</param-name> 
<param-value> 
org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
</param-value> 
</context-param> 
..... 
<listener> 
<listener-class> 
    org.springframework.web.context.ContextLoaderListener 
</listener-class> 
</listener> 
<servlet> 
<servlet-name>Vaadin Application Servlet</servlet-name> 
<servlet-class>com.vaadin.server.VaadinServlet</servlet-class> 
<init-param> 
    <description>Vaadin UI to display</description> 
    <param-name>UI</param-name> 
    <param-value>com.lone.ui.LoneUI</param-value> 
</init-param> 
<init-param> 
    <description>Application widgetset</description> 
    <param-name>widgetset</param-name> 
    <param-value>com.lone.ui.AppWidgetSet</param-value> 
</init-param> 
</servlet> 
<servlet-mapping> 
<servlet-name>Vaadin Application Servlet</servlet-name> 
<url-pattern>/*</url-pattern> 
</servlet-mapping> 

Так я просмотрел и пытался с некоторыми из сценариев:

Сценарий 1)

Сначала я настроил

<error-page> 
<exception-type>java.lang.Throwable</exception-type> 
<location>/error</location> 
</error-page> 
(or) 
<error-page> 
<exception-type>java.lang.Exception</exception-type> 
<location>/error</location> 
</error-page> 

в файле web.xml, а затем я написал класс контроллера с помощью @RequestMapping ("/ error") на уровне метода, но этот сценарий не сработал.

Сценарий 2)

То же самое с выше файле web.xml я написал класс Servlet, как

@WebServlet(value = {"/error"},asyncSupported = true) 
public class ExceptionHandling extends VaadinServlet{ 
@Override 
protected VaadinServletService getService() { 
    System.out.println("First if i display the sout message then i can Navigate to the Error Page...."); 
    return super.getService(); 
} 
} 

Но это тоже не сработало.

Сценарий 3)

То же самое с выше файле web.xml я написал класс сервлета посредством расширения HTTPServlet, но все еще не в состоянии отобразить сообщение SOUT.

Сценарий 4) Я попытался с Spring @ControllerAdvice и @exception обработчика аннотации еще я не смог отобразить страницу ошибки

Главное требование:

Мне нужно настроить исключения в файле Web.xml, чтобы при получении каких-либо исключений в консоли сервера он попал в файл web.xml и должен перейти на страницу с ошибкой.

Не могли бы вы предложить мне выполнить требование, потому что я работал над этим требованием за последние 2 дня.

Заранее спасибо.

+0

Пожалуйста, расскажите, что пошло не так, чтобы мы могли помочь? Я использовал метод '@ controllerAdvice', и он отлично работал для меня. – M4ver1k

+0

Я также использовал @ ControllerAdvice, но метод (попытка отображения SOUT-сообщения в методе) не вызывает/не выполняет в классе. Если его выполнить, я могу написать код для перехода на страницу с ошибкой. – user2323555

ответ

0

Vaadin 7 позволяет создать дополнительный обработчик ошибок. Поэтому, если вы получаете какую-либо ошибку/исключение в пользовательском интерфейсе, Ваадин вызывает ErrorHandler. Если ваша идея перенаправления на страницу ошибки в случае каких-либо ошибок, вы можете сделать следующее:

 UI.getCurrent().setErrorHandler(new ErrorHandler() { 

     @Override 
     public void error(com.vaadin.server.ErrorEvent event) { 
      Page.getCurrent().setLocation("error"); 
      // Do the default error handling (optional) 
      DefaultErrorHandler.doDefault(event); 
     } 

    }); 

Также вы можете расширить это с любыми другими методами обработчика ошибок.

+0

U предоставил обработку исключений на уровне компонентов, но мне нужна обработка исключений на уровне приложений. Поэтому, если мы получим какое-либо исключение (например, Null-указатель или Index Out of Bounds Exception и т. Д.) В консоли сервера, мы можем перейти к Одна ошибка. Для этого мне нужно настроить код исключения в файле Web.xml, но он не работает и не попадает в файл web.xml, когда мы получаем исключение в консоли. – user2323555