Hi,
I created an application with Vaadin CDI and when I requesting the context path (eg.: http://localhost:8080/myApp/UI) then the UI class starts and load the defined default view as excepted.
The problem is that when I request a not existing UI (eg: http://localhost:8080/myApp/invalid)
I get a NPE but I expecting an HTTP 404 error.
The NPE is the following:
[code]
17:47:37,350 SEVERE [com.vaadin.server.DefaultErrorHandler]
(http-localhost/127.0.0.1:8080-2) : java.lang.NullPointerException
at com.vaadin.navigator.Navigator.navigateTo(Navigator.java:503) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.ui.UI.doInit(UI.java:646) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:217) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:74) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1406) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.cdi.server.VaadinCDIServletService.handleRequest(VaadinCDIServletService.java:92) [vaadin-cdi-1.0.2.jar:1.0.2]
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:305) [vaadin-server-7.3.8.jar:7.3.8]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_71]
17:47:37,357 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web]
.[default-host]
.
[/myApp].[com.sample.myApp.UIApplicationServlet]
] (http-localhost/127.0.0.1:8080-2) JBWEB000236: Servlet.service() for servlet com.sample.myApp.UIApplicationServlet threw exception: java.lang.NullPointerException
at com.vaadin.navigator.Navigator.navigateTo(Navigator.java:503) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.ui.UI.doInit(UI.java:646) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:217) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:74) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1406) [vaadin-server-7.3.8.jar:7.3.8]
at com.vaadin.cdi.server.VaadinCDIServletService.handleRequest(VaadinCDIServletService.java:92) [vaadin-cdi-1.0.2.jar:1.0.2]
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:305) [vaadin-server-7.3.8.jar:7.3.8]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_71]
[/code]The com.sample.myApp.UIApplicationServlet is defined as a simple CDI servlet:
[code]
package com.sample.myApp;
import javax.servlet.annotation.WebServlet;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.cdi.server.VaadinCDIServlet;
@WebServlet(
value = “/*”
,asyncSupported = true
)
@VaadinServletConfiguration(
productionMode = false
,ui = MainUI.class
)
public class UIApplicationServlet extends VaadinCDIServlet{
}
[/code]When I remove the custom UIApplicationServlet then HTTP 404 returned for invalid URIs.
Diferences when the app is deployed is these:
When no custom servlet defined:
[com.vaadin.cdi.internal.ContextDeployer]
(ServerService Thread Pool -- 55) Registering VaadinServlet with CDIUIProvider
[com.vaadin.cdi.internal.ContextDeployer]
(ServerService Thread Pool -- 55) Mapping VaadinServlet to /*
When custom servlet defined:
[com.vaadin.cdi.internal.ContextDeployer]
(ServerService Thread Pool -- 55) Vaadin related servlet is defined in deployment descriptor, automated deployment of VaadinCDIServlet is now disabled
How can I set up the custom Vaadin CDI servlet to give me an HTTP 404 if a not existing UI is referenced in the request?
(I am using Jboss EAP 6.3.2, JDK 1.7.0_71, Vaadin 7.3.8, Vaadin CDI 1.0.2)
17742.zip (3.62 KB)