Felix+Struts2搭建OSGI Web开发框架(二)

如果开发web项目,离不开ORM框架。我个人比较熟悉Hibernate。本来,可以使用IPOJO的扩展模式进行扩展点检测,但是IPOJO的资料很少,而且例子太不给力,所以,自己按照Eclipse的扩展点机制写了个简单的插件,host-Register,来提供扩展点的衔接。他的api包是host-Register-api,这是OSGI鼓励的服务发布方式:api和实现分开在两个bundle之中。

host-Register:Hibernate扩展注册插件的实现

host-Register-api:Hibernate扩展注册插件的api

host-Hiberbundle:Hibernate bundle,注册了一个扩展点,并且加入了Hibernate的核心jar

host-HiberExtension:Hibernate的扩展bundle,扩展了一个Bulletin实体,将其持久到Mysql数据库

host-HiberClient,:Hibernate扩展实现的测试例子,实验是否成功。

说明:这次属于试验性质的插件扩展,可能存在一些bug,以及调试过程中的print信息尚未去除。这次扩展使用,是根据《osgi进阶--模式与最佳实践.pdf》一本书中的一些例子写的,一些详细的调试方式请参照这本书。但是,本文会讲解两种调试方式:Equinox 和felix2.0.4。一些OSGI基础的知识,请参照《OSGI实战.pdf》

Source源码和编译后的bin包如下:

http://download.csdn.net/detail/icecream0/4318333


环境如下:

环境1:Eclipse的Equinox:

Felix+Struts2搭建OSGI Web开发框架(二)_第1张图片

图1

这是Eclipse Equinox的启动配置,启动以后界面如下:

Felix+Struts2搭建OSGI Web开发框架(二)_第2张图片

图2


可以将HibernateExtensionBin中的host-Hiberbundle 、host-HiberExtension、host-HiberClient 以此安装到OSGI环境之中。

安装命令

install  file:/D:/plugin/hostHiberbundle_1.0.0.201205211454.jar        /**file:/以后的路径,是本地环境中,您的host-Hiberbundle_*.jar存放的路径

以此安装完成以后,打开mysql的客户端程序:截图如下:

Felix+Struts2搭建OSGI Web开发框架(二)_第3张图片

图3


看到如上图所示,表明Hibernate工作正确。


环境2:Felix2.0.1

下载felix2.0.1

将host-Register、host-Register-api放到  Felix_HOME/bundle/下

启动felix:

     进入命令行,将命令锁定大felix_home

    >java -jar bin/felix.jar

   如下图:

Felix+Struts2搭建OSGI Web开发框架(二)_第4张图片

图4

看到如图所示信息,说明Register插件已经正常工作,当中会打印出一些测试信息,不必在意。

安装剩余的host-Hiberbundle、host-HiberExtension、host-HiberClient方式和Equinox一样。也可以将这三个jar文件放到felix_home/bundle/下,直接启动felix,效果一样。

注意:在这里,Host-Hiberbundle 源文件中的:ehcache.xml 和com.bing.cacheProvider.*在Felix或者Equinox中是不必须的,这是为后来集成到Struts2、tomcat之中的时候所需要的,在《三》中,如果没有这两个,会报一个EhCacheProvider找不到ehcache-failsafe.xml错误,原因是OSGI中,资源的协议都是bundle,而现有的Hibernate框架无法解析bundle开头的路径协议。后边再讲。

安装完成以后,mysql出现了上面图3所示的效果,说明成功。

开发过程中注意:

   在开发过程中,总是报一个错误:就是http://blog.csdn.net/icecream0/article/details/7568763

做法那篇博文中已经讲了。还有一个注意的,就是META-INF/MANIFEST.MF中,必须导入javax.xml,这个错误在Equinox中没有体现出来,但是在felix中出现了,原因就是需要导入javax.xml。


说明:这个扩展小例子只是为了探索Hibernate以及OSGI,并不完善。如果需要应用到实际项目中,最好使用Eclipse的扩展框架,或者IPOJO。

你可能感兴趣的:(框架,Hibernate,web开发,struts,扩展,osgi)