我想将vaadin 7与osgi集成,但不再有任何AbstractApplicationServlet类。
我跟随Neil Bartlett使用vaadin桥进行整合https://github.com/njbartlett/VaadinOSGi。
我尝试过以某种方式使用VaadinServlet,但没有运气。
我也搜索了其他解决方案,但没有找到。
你有什么建议吗?
由于
答案 0 :(得分:4)
Vaadin 7有许多默认用例无法看到的设计更改,但特别是对于OSGi集成,您必须做一些额外的工作。 为了帮助您入门,您应该尝试了解有关类的初始化过程: VaadinServlet,VaadinServletService,VaadinSession和UIProvider。
有问题的部分是使用classname参数作为参数的方法,你必须解决这个问题,例如:实现直接注入实例的工厂。
如果查看UIProvider.createInstance(..)
的源代码,您可以看到原始实现尝试创建新实例,这将失败,因为vaadin在OSGi中看不到您的类。同样的原则也适用于我提到的其他类别。
你必须要看的另一件事是Vaadin 7中新的罐子分离。
一种好的方法是使用蓝图上下文附加bundle片段。注册BundleHttpContext
的方式与它在Vaadin中的工作方式相同。附加片段也适用于您想要使用的主题。
很抱歉,我无法提供交钥匙解决方案,但我希望这可以帮助您自己查看。