读书人

在Eclipse RCP中施用Spring OSGI 管理

发布时间: 2012-06-28 15:20:03 作者: rapoo

在Eclipse RCP中应用Spring OSGI 管理bean(二)

在文章一中,引用了Ralf Ebert的文章,讲述了整个实现的机制和原理,我在实际的实验工程中,遇到了一些问题,真实的记录下来,为后来者戒。

1、在把org.eclipse.springframework.util插件导入自己的workspace中时,如果没有在自己的eclipse runtime中设置spring bundle的位置,工程会报错,找不到导入的包。于是找到spring 3.0.4版本的bundle,加入到runtime中;第二部分要加入runtime的是spring osgi 的bundle,现在的版本是2.0,而比较稳定的是1.2.1;第三部分需要加入runtime的bundle是spring和spring osgi这些bundle的依赖bundle,和你在开发osgi bundle一样,通过不停的启动环境,然后加入进去就可以。

2、建立测试工程org.tkxing.rcp.spring,按照eclipse rcp 的生成一个View的wizard生产即可,具体的代码如附件中所示。在项目中import org.eclipse.springframework.util包。在osgi bundle中,spring osgi会去bundle的META-INF/spring目录下寻找spring的congtext文件,在工程中建立一个springContext.xml配置文件:

? 按照文章一中的介绍设置设置扩展点:

   <extension         point="org.eclipse.ui.views">      <view            name="View"            class="org.eclipse.springframework.util.SpringExtensionFactory"            id="org.tkxing.spring.view.one">      </view>   </extension>

?3、启动实验工程,按照正常的情况下,应当系统运行成功,可是在我启动的过程中,工程一直报错无法正确运行。经过调试发现,在系统获得spring osgi在bundle中设置的的ApplicationContext服务时,总是不成功。可是在传统的方法中,无法看到在运行的工程中,到底哪些bundle成功运行,在bundle中提供出来哪些服务。于是,进行了诸多的网上搜索,发现在eclipse rcp的启动项中增加 -console选项,就会有osgi的交换出现在控制台上。在增加了这个参数后,应用bundle指令查看org.tkxing.rcp.spring插件,的确没有提供所需的服务,于是继续查找原因,发现系统启动过程中spring、spring osgi并不是默认启动,所以这些bundle的状态都是resolve的。经过在配置中把所用的bundle设置为默认启动,在系统系统,实验工程运行成功。

?

?

1 楼 fy_kenny 2011-10-18 能跟Spring集成吗,就这样? Spring有什么优点啊, 2 楼 xingtongkun 2011-10-24 1、文中讨论的就是eclipse和spring通过spring osgi集成的方法,当然可以集成了。
2、spring是一个目前在java中应用非常广泛的框架,一方面提供了应用java领域中应用各种规范及最佳实践的方法,另一方面spring提供了client和server之间远程通讯的专用的通讯方式,通过httpinvoke序列化对象的方式,而不是webservice方式,从而提升了数据的传输效率;而eclipse是目前java rich client中比较流行的框架,二者的结合,可以在实际应用中,产生很好应用。

读书人网 >操作系统

热点推荐