Веб-приложение на основе 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.