2011-09-12 8 views
0

Maven + BNDで作成したバンドルのセットがあります。バンドルの1つに私のVaadin "Application"が含まれ、他のバンドルにはいくつかのユーティリティと追加のエディタがあります。VaadinのリソースはOSGIにロードされていません

私はTomatサーバー上でこのアプリケーションを実行できます。すべては問題ありません。その後、私はOSGI(Apache Felix)で実行しようとしました。多くの解決された問題の後、私は最終的にOSGIランタイムを実行し、すべてのバンドルをロードして正しく起動させました。 "localhost:8080/bat"で最初のページにアクセスすることもできます。 "404 not found"は表示されません。

問題は次のとおりです。スタートページには、のフォーマットされていないテキストのみが表示されます。

アプリはVaadinのリソース(CSS、多分widgetsetなど)を読み込めません。 デバッグフレームは言う:Vaadinのリソースをロードすることができないよう

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. 

が見えます。

質問: OSGIバンドルとしてパッケージ化されたVaadinアプリケーションの構造は何ですか?

はこちら(Mavenの+ BNDで作成した)私のOSGiバンドル構造です: (私は重要ではないとして、いくつかのVaadinトナカイのテーマフォルダをスキップ)

├───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 

答えて

0

私は最近、この練習をしました。 vaadinとOSGiのグーグルでは、どのように統合するのか、どのレベルにするのかということが異なることが明らかになりました。コンポーネントまたはアプリケーション。しかし、重要な「実現ポイント」は、VAADINリソースがクライアントからアクセスできるように、つまりサーブレットからのリソースとして提供できるように配置する必要があることです。私はバンドル構造がこのように役立つだろうとは思わない、あなたはHttpサービスに対処し、どのようにそれらを提供するのか指示を与える必要があります。

ニールバートレットのhttps://github.com/njbartlett/VaadinOSGi、具体的にはvaadinbridgeプロジェクトのvaadinの例を見てください。それが問題の理解に役立った。

もう1つのアプローチは、VirgoなどのWARを理解するOSGi continerにバンドルをデプロイすることです。しかし、それはちょうど推測です。

+0

私が見つけた[ハックスタイル]一時的な解決策がある: **:としてVaadinのリソースを使用してバンドルを宣言 'フラグメント-ホスト:com.vaadin;バンドルバージョン= "6.6.6"' ** それは明らかに良い解決策ではありません。 – Alex