Как развернуть приложение с аддоном в файле войны

Я использую адаптивное дополнение к моему проекту Vaadin. Я выполнил виджет, и я могу запустить проект в Eclipse. Я использую версии Vaadin 7.1.9 и Eclipse Juno.

Затем, когда я попытался экспортировать в военный файл и развернул его на Jetty 8 и Jetty 9. Я получаю следующие ошибки для каждого.

В Jetty 8 я возвращаюсь: я могу запустить причал, но когда я попытался получить доступ, если из браузера, я получаю следующее:

      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

Обратите внимание: у меня есть еще один военный файл, который был успешно выполнен как в Jetty 8, так и в Jetty 9. Также мой проект работает без этого набора виджетов.

С 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>

Пожалуйста, дайте мне знать, как я могу создать файл войны и развернуть его вместе с виджетом. Я использовал eclipse для экспорта в файл войны. Чтобы убедиться, что файлы виджетов существуют, я разархивировал военный файл, и они присутствуют. Эти файлы не имеют нулевого размера.

Заранее спасибо.


person User12111111    schedule 17.12.2013    source источник
comment
Вот решение, которое я нашел: это работает для Jetty 8. В вашем пользовательском классе VaadinServlet нам нужно указать пакет widgetset, см. ниже: @WebServlet(value = {/*, /VAADIN/*}, asyncSupported = true) @ VaadinServletConfiguration (productionMode = false, ui = MainUI.class, widgetset = com.demo.main.widgetset.DemoWidgetset)   -  person User12111111    schedule 17.12.2013


Ответы (1)


Ошибка ...

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

... говорит о том, что указывает на недопустимое развертывание WAR, где есть несколько сервлетов, сопоставленных с одной и той же спецификацией пути. Это не разрешено в Servlet API.

Возможно ли, что один из них должен быть фильтром?

Или что какая-то библиотека содержит еще @WebServlet(value={"/*"}) записей, конфликтующих с вашими?

Если вы настроите ведение журнала DEBUG (или FINEST, если используете java.util.logging) для именованного регистратора org.eclipse.jetty.servlet.ServletHandler, вы сможете увидеть некоторые скудные подробности того, что происходит.

Однако сообщение об ошибке можно улучшить, поэтому для его исправления была зарегистрирована ошибка: https://bugs.eclipse.org/424284

person Joakim Erdfelt    schedule 17.12.2013