如何阻止vaadin窃取所有url模式(并与spring mvc很好地配合)

Tom*_*Tom 4 java vaadin

我有一个vaadin应用程序,我正在尝试提供一些由Spring MVC提供的REST URL - 我的web.xml在下面.我只在/ info获得404s - 似乎Vaadin窃取所有网址模式.

如果我删除Vaadin,我可以访问/ info并获取该网址的内容.如何让他们一起玩得很好?

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml
    </param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <description>Vaadin production mode</description>
    <param-name>productionMode</param-name>
    <param-value>false</param-value>
</context-param>

<servlet>
    <servlet-name>Vaadin Application Servlet</servlet-name>
    <servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
    <!-- replace standard applicationServlet with the ICEpush one -->
    <!--<servlet-class>org.vaadin.artur.icepush.ICEPushServlet</servlet-class>-->
    <init-param>
        <description>Vaadin application class to start</description>
        <param-name>application</param-name>
        <param-value>myapp.vaadin.MyVaadinApp</param-value>
    </init-param>
    <init-param>
        <param-name>widgetset</param-name>
        <param-value>myapp.gwt.MyAppWidgetSet</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>Vaadin Application Servlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>Vaadin Application Servlet</servlet-name>
    <url-pattern>/VAADIN/*</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>info</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>info</servlet-name>
    <url-pattern>/info</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

Rob*_*ond 5

Vaadin servlet的url-pattern是/*,它是所有内容的通配符,因此servlet将处理每个请求.一种选择是将Vaadin servlet的URL缩小到比/*更具体的内容.