【问题标题】:Vaadin 7.4 , Spring, Tomcat 7 , Change context root using @WebServletVaadin 7.4,Spring,Tomcat 7,使用 @WebServlet 更改上下文根
【发布时间】:2015-06-04 13:27:29
【问题描述】:

我正在使用带有 Spring 的 Vaadin 7.4,使用“spring4vaadin” - 项目。我正在使用 Servlet API 3.0 在 Tomcat 7.0.29 上部署应用程序。

我将应用程序部署在 Tomcat 的根上下文(“/”)下,并使用 @WebServlet-Annotation 将应用程序的实际上下文设置为“/esb/*”:

@WebServlet( value = "/esb/*"  , asyncSupported = true )
public static class Servlet extends SpringVaadinServlet {

}

但每次当我导航到应用程序 URL“http://localhost:8080/esb/”时,我都会收到错误消息:“无法加载引导 javascript ./../VAADIN/vaadinBootstrap.js?v=7.4.0”来自 Vaadin 的浏览器弹出窗口。

通过 web.xml 看起来像这样:

<web-app id="ESAB_Cutting_Prototyping" version="3.0"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
     metadata-complete="false">
</web-app>

如果我在 Intellij IDE 的 Tomcat 部署配置中设置上下文,它可以正常工作。

我不知道该怎么做 - 非常感谢任何帮助。

【问题讨论】:

  • 我使用 Chrome 的开发者工具做了一些研究。即使我已经使用以下注释以编程方式设置了 servlet 的上下文:@WebServlet( value = "/esb/*" , asyncSupported = true ) 到上下文根 "/esb",Vaadin 仍在尝试加载URL "localhost:8080/VAADIN/vaadinBootstrap.js?v=7.4.0" 中的 WidgetSet 是错误的。

标签: spring tomcat vaadin root context.xml


【解决方案1】:

好的,我解决了。

我的问题是,我只这样做了:

@WebServlet( value = "/esb/*"  , asyncSupported = true )

但为了让它发挥作用,我必须这样做:

@WebServlet( urlPatterns = { "/esb/*" , "/VAADIN/*" }  , asyncSupported = true )

所以 servlet 会监听:

 http://localhost:8080/esb/

以及来自 Vaadin-Framework 的后续请求:

 http://localhost:8080/VAADIN/...

其中包括引导代码和小部件本身。

【讨论】:

  • 谢谢,我遇到了同样的问题,这个解决方案解决了它(使用 Vaadin 6 btw)!
猜你喜欢
  • 2011-09-26
  • 1970-01-01
  • 2018-12-02
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多