Ресурсы Vaadin не загружаются в OSGI - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть набор связок, которые я создал с помощью Maven + BND. Один из комплектов содержит мое Vaadin-приложение, в других есть некоторые утилиты и дополнительные редакторы.

Я могу запустить это приложение на сервере Tomat - все в порядке. Затем я попытался запустить в OSGI (Apache Felix). После многих решенных проблем мне, наконец, удалось запустить среду выполнения OSGI и правильно загрузить и активировать все пакеты. Я даже могу получить доступ к 1-й странице с помощью «localhost: 8080 / bat» - на нем больше не отображается «404 not found».

Проблема в том, что на моей стартовой странице отображается только неформатированный текст из моего приложения.

приложение не может загрузить свои ресурсы Vaadin (CSS, возможно, набор виджетов и т. Д.). кадр отладки говорит:

Starting Vaadin client side engine. Widgetset: com.vaadin.terminal.gwt.DefaultWidgetSet
Widget set is built on version: 6.6.6
Warning: widgetset version 6.6.6 does not seem to match theme version
Starting application bat-97301
Vaadin application servlet version: 6.6.6
Application version: 0.0.1
inserting load indicator
Making UIDL Request with params: init
Server visit took 9ms
...
Assuming CSS loading is not complete, postponing render phase. (.v-loading-indicator height == 0)
Assuming CSS loading is not complete, postponing render phase. (.v-loading-indicator height == 0)
....
CSS files may have not loaded properly.

похоже, что ресурсы Vaadin не могут быть загружены.

Итак, вопрос: Какова правильная структура для приложения Vaadin, упакованного как пакет OSGI?

вот моя структура пакета OSGI (созданная с помощью Maven + BND): (Я пропустил некоторые папки тем Vaadin Reindeer как не важные)

├───com
│   └───my
│       ├───demomodules
│       ├───preferences
│       ├───widgetset
│       └───workspaces
├───META-INF
├───VAADIN
│   ├───icons
│   ├───themes
│   │   ├───mytheme
│   │   └───reindeer
│   │       ├───a-sprite-definitions
│   └───widgetsets
│       ├───com.my.widgetset.Vaadin1Widgetset
│       │   └───ie6pngfix
│       └───WEB-INF
│           └───deploy
│               └───com.my.widgetset.Vaadin1Widgetset
│                   ├───rpcPolicyManifest
│                   └───symbolMaps
└───WEB-INF

1 Ответ

0 голосов
/ 14 сентября 2011

Я только недавно сделал это упражнение.Поиск в Google vaadin и OSGi показывает, что существуют разные способы интеграции и на каком уровне, например, компонент или приложение.Однако ключевой «момент реализации» заключается в том, что вы должны организовать его так, чтобы ресурсы VAADIN были доступны с клиента, то есть могли быть использованы как ресурсы из вашего «сервлета».Я не думаю, что структура пакета как таковая поможет вам здесь, вы должны разобраться со службой Http и дать ей инструкции о том, как обслуживать материал.

Посмотрите на примеры vaadin Нила Бартлетта наhttps://github.com/njbartlett/VaadinOSGi, специально для проекта vaadinbridge.Это помогло мне разобраться в проблемах.

Другой подход может заключаться в развертывании пакета на континенте OSGi, который понимает WARs, например, Virgo.Но это только предположение.

...