Веб-приложение на основе Vaadin недоступно (404) в Apache Felix

ОБНОВЛЕНИЕ: РЕШЕНО. Мне пришлось использовать комплект утилит для автоматической загрузки приложений Vaadin в OSGI. См. http://dev.vaadin.com/wiki/Arvue/OSGi Пакеты I используется: org.vaadin.osgi, org.vaadin.osgi.staticres

===

Я создал образец проекта Vaadin, построил его с Maven + BND как пакет OSGI.

запустил Apache Felix с моим пакетом «webui-1.0.jar» вместе с его зависимым «vaadin-6.6.6.jar». Я могу получить доступ к localhost: 8080, но localhost: 8080 / webui показывает «Проблема с доступом / webui. Причина: NOT_FOUND».

"webui-1.0.jar" содержит:

com   -- java classes
META-INF/MANIFEST.MF
VAADIN  -- empty now, but will contain Vaadin widgetsets and other resources
WEB-INF/web.xml

мой 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>webui</display-name>
    <context-param>
        <description>
        Vaadin production mode</description>
        <param-name>productionMode</param-name>
        <param-value>false</param-value>
    </context-param>
    <servlet>
        <servlet-name>Vaadin1 Application</servlet-name>
        <servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
        <init-param>
            <description>
            Vaadin application class to start</description>
            <param-name>application</param-name>
            <param-value>com.mywebtest.MyVaadinApplication</param-value>
        </init-param>
        <init-param>
            <description>
            Application widgetset</description>
            <param-name>widgetset</param-name>
            <param-value>com.mywebtest.widgetset.Vaadin1Widgetset</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>Vaadin1 Application</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
</web-app>

мой файл MANIFEST.MF, созданный Maven + BND:

Manifest-Version: 1
Bnd-LastModified: 1315684875698
Build-Jdk: 1.6.0_26
Built-By: ask
Bundle-ManifestVersion: 2
Bundle-Name: webui
Bundle-SymbolicName: webui
Bundle-Version: 1.0.0
Class-Path: 
Created-By: Apache Maven Bundle Plugin
Export-Package: com.mywebtest;uses:="com.vaadin,com.vaadin.ui";version="
 1.0.0"
Import-Package: com.vaadin,com.vaadin.ui
Tool: Bnd-1.43.0

Запуск пакетов:

g! lb
START LEVEL 1
   ID|State      |Level|Name
    0|Active     |    0|System Bundle (3.2.2)
    1|Active     |    1|Apache Felix Bundle Repository (1.6.6)
    2|Active     |    1|Apache Felix Configuration Admin Service (1.2.8)
    3|Active     |    1|Apache Felix Dependency Manager (3.0.0)
    4|Active     |    1|Apache Felix Gogo Command (0.8.0)
    5|Active     |    1|Apache Felix Gogo Runtime (0.8.0)
    6|Active     |    1|Apache Felix Gogo Shell (0.8.0)
    7|Active     |    1|Apache Felix Http Api (2.2.0)
    8|Active     |    1|Apache Felix Http Jetty (2.2.0)
    9|Active     |    1|Apache Felix Metatype Service (1.0.4)
   10|Active     |    1|Apache Felix Declarative Services (1.6.0)
   11|Active     |    1|Apache Felix Web Management Console (3.1.8)
   12|Active     |    1|Vaadin (6.6.6)
   13|Active     |    1|webui (1.0.0)

person Alex    schedule 10.09.2011    source источник
comment
Какие еще пакеты работают? Почему вы вообще ожидаете, что что-нибудь появится под псевдонимом /webui?   -  person Neil Bartlett    schedule 11.09.2011
comment
Я добавил список пакетов к исходному сообщению. Я думал, что веб-приложение в пакете webui-1.0 будет развернуто автоматически, такое впечатление у меня сложилось из какой-то статьи в Интернете ...   -  person Alex    schedule 12.09.2011
comment
Я загрузил проблемный пакет (1,1 МБ) во временное расположение: hostedredmine.com/documents/617   -  person Alex    schedule 12.09.2011
comment
хорошо, я нашел комплект утилит для автоматической загрузки приложений Vaadin в OSGI. эта проблема решена. приложение можно развернуть и (почти) показать в браузере. Мне нужно найти способ поместить наборы виджетов Vaadin в Bundle, созданный Maven + BND, но это отдельная проблема.   -  person Alex    schedule 13.09.2011


Ответы (1)


Ни один из пакетов, имеющихся в вашей среде выполнения, не будет автоматически регистрировать для вас конечную веб-точку только потому, что вы написали внутри своего пакета файл с именем web.xml.

У вас есть два основных варианта публикации веб-приложений в OSGi. Первый - получить экземпляр службы HttpService, который, как вы должны найти, опубликован пакетом «Felix Http Jetty».

Второй, более близкий к «традиционной» разработке веб-приложений на Java, - это создание «пакета веб-приложений» или WAB. По сути, это такая же связка, как ваша, с WEB-INF/web.xml. Однако вам нужно будет сделать еще 2 вещи, чтобы он заработал:

  • Объявите веб-приложение в вашем MANIFEST.MF следующим образом: Web-ContextPath: /webui
  • Установите пакет, который обеспечивает поддержку WAB, например пакет, предоставляемый PAX Web.
person Neil Bartlett    schedule 12.09.2011
comment
спасибо, Нил! Я только что обновил тему несколько минут назад. В настоящее время я использую пакет org.vaadin.osgi (dev.vaadin.com/wiki/Arvue/ OSGi) автоматически развертывает приложения Vaadin с определенным заводским тегом в аннотации Component. он почти работает, за исключением ресурсов, которые отсутствуют (скорее всего, из-за неправильного макета файлов пакета). Я отправлю об этом отдельный вопрос (и, возможно, решение, если я найду его сам) - person Alex; 13.09.2011