基于OSGi的Virgo环境搭建(二)——集成Snaps

上一篇我们介绍了用java开发模块化web所需最基本环境(STS+Virgo),本节将介绍如何集成Snaps到Virgo中并演示几个官方的小Demo。

1.预备知识

Snaps是什么?

可以参考http://osgi.com.cn/article/7289354

2.集成Snaps

首先,我们进入http://www.eclipse.org/virgo/download/,下载Virgo Snaps。

下载并解压,目录结构如下:

下面我们将Snaps System 集成到 Virgo Tomcat Server中。

步骤一:

dist目录中存放的是snaps相关jar包,我们将该目录下的所有内容拷贝到${SERVERHOME}/repository/usr(${SERVERHOME}是指你本机安装的virgo server的根路径,譬如F:\virgo-tomcat-server-3.6.2.RELEASE\repository\usr)以及${SERVER_HOME}/repository/ext目录下。

步骤二:

修改文件${SERVER_HOME}/configuration/org.eclipse.virgo.kernel.userregion.properties,在该文件末尾追加repository:plan/org.eclipse.virgo.snaps(即在initialArtifacts的右边赋值),使virgo server 在启动时能加载我们集成的snaps相关功能。

步骤三:

检查我们集成的snaps功能是否生效,在STS中启动我们的Virgo Server。在控制台检查输出信息,如果配置安装正确,则会打印出如下图所示信息。

成功集成Snaps之后,接下来我们将官方提供的Demo部署到Virgo Server上面。

我们在STS IDE中启动Virgo Server,打开浏览器输入http://localhost:8080/ 进入管理页面。

点击Artifacts选项卡,进入部署页面。

添加sample文件夹下的jar包,之后点击Deploy。

点击Deploy之后,部署结果弹出,为什么会产生错误?仔细观察,不难发现是bundle版本出现问题。

注意:产生这个问题的原因是Virgo Snaps官方demo jar文件未及时修改更新版本所致。

如何解决这个问题?

以修改org.eclipse.virgo.snaps.sample.animal-3.6.2.RELEASE.jar为例。

用rar软件打开jar包,打开META-INF目录,修改MANIFEST.MF文件,将3.1修改为4,然后保存修改。

修改完毕后,重新部署一下这org.eclipse.virgo.snaps.sample.animal-3.6.2.RELEASE.jar。

此时弹出正确部署的结果。

其他jar包修改方法类似,此处略。

成功部署我们的host-bundle之后,STS控制台会输出 Host created for path '/animal-menu-bar'

这表明host已经加载并安装到我们的Virgo Snaps容器中,此时打开浏览器,访问http://localhost:8080/animal-menu-bar/看看效果吧。

OK,接下来我们依次将剩下的3个jar部署到Virgo Snaps容器中。

部署方法同animal,此处略过,直接上效果图。

部署Dog成功后,控制台输出 Snap bound to path '/animal-menu-bar/dog' 接下来刷新http://localhost:8080/animal-menu-bar/页面。

发现此时多了Dog这个链接。

点击Dog链接,会看到一个十分可爱的DOG。

3.总结

通过官方Demo可以看出,animal是host,而dog、blue、cat都是snap,即snap是attach(依附)在host上面的。snap不能单独运行,必须依赖于某一个唯一的host。我们可以将dog、blue、cat等jar视为我们开发的新模块,在部署新的模块时,不需要重启Server,就像例子展示的那样,动态的在Virgo Server管理页面上安装部署jar,实现热插拔及动态部署的功能。这一点相对于传统方式有很大的灵活性以及扩展性,不用担心因服务器端程序版本升级或添加新模块而停掉Server,已减少Server停机带来的影响及损失。

 

转载自:http://osgi.com.cn/article/7289515

猜你喜欢

转载自zhuzhaoyong.iteye.com/blog/2256894
今日推荐