如何使用插件将应用程序部署到war文件

时间:2013-12-17 06:28:30

标签: java eclipse jetty vaadin vaadin7

我正在使用我的Vaadin项目的响应式附加组件。我编译了小部件,我能够在Eclipse上运行该项目。我使用的版本是Vaadin 7.1.9和Eclipse Juno。

然后当我尝试导出到war文件并将其部署在Jetty 8和Jetty 9上时。我收到了以下错误。

在Jetty 8中,我回来了: 我可以启动jetty,但是当我尝试从浏览器访问时,我得到了以下内容:

      Widgetset does not contain implementation for com.vaadin.addon.responsive.Responsive. 
      Check its component connector's @Connect mapping, widgetsets GWT module description file and re-compile your widgetset. 
      In case you have downloaded a vaadin add-on package, you might want to refer to add-on instructions.

在Jetty 9中,我回来了:

    java.lang.IllegalStateException: Multiple servlets map to path: /*
            at org.eclipse.jetty.servlet.ServletHandler.updateMappings(ServletHandle
    r.java:1383)
            at org.eclipse.jetty.servlet.ServletHandler.setServletMappings(ServletHa
    ndler.java:1480)
            at org.eclipse.jetty.servlet.ServletHandler.addServletMapping(ServletHan
    dler.java:916)
            at org.eclipse.jetty.annotations.WebServletAnnotation.apply(WebServletAn

请注意:我有另一个war文件,它在Jetty 8和Jetty 9中都成功执行。此外,我的项目在没有该widgetset的情况下工作。

使用Jetty 8,我再次尝试重新编译小部件,但我收到了同样的错误。

这是我的web.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        <display-name>Demo</display-name>
        <context-param>
            <description>Vaadin production mode</description>
            <param-name>productionMode</param-name>
            <param-value>false</param-value>
        </context-param>
        <servlet>
            <servlet-name>Myrmnui Application</servlet-name>
            <servlet-class>com.demo.main.DemoResponsiveAppServlet</servlet-class>
            <init-param>
                <description>Vaadin UI class</description>
                <param-name>UI</param-name>
                <param-value>com.demo.main.MainUI</param-value>
            </init-param>
            <init-param>
                <description>
                Application widgetset</description>
                <param-name>widgetset</param-name>
                <param-value>com.demo.main.widgetset.DemoWidgetset</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>Application</servlet-name>
            <url-pattern>/*</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>Application</servlet-name>
            <url-pattern>/VAADIN/*</url-pattern>
        </servlet-mapping>
    </web-app>

请告诉我如何构建war文件并与widget一起部署。我用eclipse导出到war文件。为了确保小部件文件存在,我解压缩了war文件并且它们存在。这些文件的文件大小不是。

提前致谢。

1 个答案:

答案 0 :(得分:0)

错误......

`java.lang.IllegalStateException: Multiple servlets map to path: /*` 

...正在告诉,因为它指向一个无效的WAR部署,其中有多个servlet都映射到相同的路径规范。这在Servlet API中是不允许的。

可能其中一个应该是过滤器吗?

或者某些图书馆引入了更多与您冲突的@WebServlet(value={"/*"})条目?

如果您针对指定的记录器DEBUG设置FINEST日志记录(或java.util.logging,如果使用org.eclipse.jetty.servlet.ServletHandler),则可以看到有关正在发生的事情的一些细节。

但是,错误消息可以改进,因此提交了一个错误消息来改进它:https://bugs.eclipse.org/424284