Vaadin 7.4,Spring,Tomcat 7,使用@WebServlet更改上下文根

时间:2015-03-31 09:07:08

标签: spring tomcat vaadin root context.xml

我使用Vaadin 7.4和Spring使用" spring4vaadin" - 项目。我正在使用Servlet API 3.0在Tomcat 7.0.29上部署应用程序。

我在Tomcat的Root-Context(" /")下部署应用程序,并且我使用@WebServlet-Annotation将App的实际上下文设置为" / ESB / *":

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

}

但每当我导航到App-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部署配置中设置上下文,它可以正常工作。

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

1 个答案:

答案 0 :(得分:2)

好的 - 我解决了。

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

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

但为了使其发挥作用我必须这样做:

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

所以servlet会听:

 http://localhost:8080/esb/

以及随后的Vaadin框架请求:

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

包括Bootstrap-Code和Widget本身。