Requested resource [/VAADIN/HEARTBEAT/] not found from filesystem or throug

Hi there,

I am giving a try to new Vaadin v7.

I am working through the Book and finally I have a very simple HW application runing. However, I am getting the following error:

Any Idea,

Regards,

Jose

This message is logged at INFO level.
However, I also get this message and I want to know why.

I have found the cause in ma application.
Initially, I have used this servlet mapping:

Vaadin Application Servlet
/VAADIN/*

and I accessed via URL http://localhost:8080/myapp/VAADIN

This was working fine, except from HEARTBEAT requests.
After changing the mapping as follows, HEARTBEAT is now working as well:

Vaadin Application Servlet
/*

Of course, I have to omit the VAADIN path segment when opening the application in a browser.

However, in my opinion this is a bug. The official Vaadin manual suggests a mapping with the VAADIN path segment when there are other servlets which must be mapped:
https://vaadin.com/book/-/page/application.environment.html#application.environment.web-xml.mapping
In that case, it should be possible to have /VAADIN/* the central entry point to the UI, without having to add another mapping which just points to the same servlet.

Regards, Sebastian

The path “/VAADIN/" is for static resources (theme, widgetset) and the application should not be accessed under it. The documentation says that if the application is not in the root context of the WAR,
also
"/VAADIN/
” should be mapped to the same servlet if the resources are not extracted to be served directly by the server (not from the JAR/WAR by VaadinServlet; more complicated when upgrading Vaadin).

If you do have multiple servlets in the WAR, there should be no practical downside in mapping “/myapp/" and "/VAADIN/” to the same Vaadin servlet apart from a few extra lines in web.xml .

If anything should be done to enable mapping only a single non-root path, it should be permitting VAADIN to be inside the Vaadin application context rather than the other way around.

I can’t get it to work with embedded UI on Vaadin 7.0.0.

I have following static resources:

  • /designer.html - page that embeds vaadin
  • /VAADIN/themes

And Vaadin servlet mapped to “/VAADIN/*” (for resources) and “/vaadinServlet” (for actual service, just to make errors clearer).
I also have other servlets mapped.

Per documentation, I initialize application with:

  • “vaadinDir”: “./VAADIN/”
  • “browserDetailsUrl”: “./vaadinServlet”

This results in application requesting /designer.html/HEARTBEAT which is wrong since HEARTBEAT must be handled by servlet and according to docs servlet is set by browserDetailsUrl.

In a forum thread titled “Vaadin 7: Embedded Application” (which I can’t access in any way other than google results cache), I have found that setting undocumented “serviceUrl” parameter to servlet path would help.
It does generate correct url now (“/vaadinServlet/HEARTBEAT”) but VaadinServlet does not recognize this as a heartbeat. ServletPortletHelper.isHeartbeatRequest() checks whether request.getPathInfo() starts with “/HEARTBEAT” but pathinfo contains full path with servlet name in front!

As a workaround I have removed “serviceUrl” and mapped VaadinServlet to “/designer.html/*”.