Как да внедрите приложение с добавка към военен файл

Използвам адаптивна добавка към моя проект Vaadin. Съобразих джаджата и мога да стартирам проекта на Eclipse. Версията, която използвам, е Vaadin 7.1.9 и Eclipse Juno.

След това, когато се опитах да експортирам във военен файл и го внедрих на 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

Моля, обърнете внимание: имам друг военен файл, който беше изпълнен успешно както в 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, където има множество сървлети, всички картографирани към една и съща спецификация на пътя. Това не е разрешено в 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