2011-09-12 38 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