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

ОБНОВЛЕНИЕ: решено. Мне пришлось использовать пакет утилит для автоматической загрузки приложений Vaadin в OSGI. См. Http://dev.vaadin.com/wiki/Arvue/OSGi Пакеты, которые я использовал: 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)

1 ответ

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

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

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

  • Объявите веб-приложение в вашем файле MANIFEST.MF следующим образом: Web-ContextPath: /webui
  • Установите пакет, обеспечивающий поддержку WAB, например, предоставляемый PAX Web.
Другие вопросы по тегам