2011-09-12 39 views
0

加載我有一組束我與Maven + BND創建。其中一個包含我的Vaadin「應用程序」,其他包含一些實用程序和其他編輯器。Vaadin資源沒有在OSGI

我可以在托馬特服務器上運行這個程序 - 一切正常。然後我嘗試在OSGI(Apache Felix)中運行。在解決了許多問題後,我終於設法運行OSGI運行時,並正確加載和激活所有軟件包。 我甚至可以用「本地主機:8080 /蝙蝠」獲得第1頁 - 它不顯示「404未找到」了。

問題是:起始頁僅顯示一些未格式化的文本從我的應用程序。

應用程序無法加載其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馴鹿主題文件夾,並不重要)

├───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服務並給它指示如何提供服務。

看看neil bartlett的vaadin例子https://github.com/njbartlett/VaadinOSGi,特別是vaadinbridge項目。這幫助我理解這些問題。

另一種方法可能是在理解WARs的OSGi continer上部署bundle,比如處女座。但這只是一個猜測。

+0

一個[破解風格]臨時的解決方案,我發現是: **:與Vaadin資源宣佈你的包「片段,主持人:com.vaadin;捆綁版本=‘6.6.6’」 ** 但這顯然不是一個好的解決方案。 – Alex