什么是OSGI,他是一个动态组件、服务模型,简单得说就是在运行程序的时候,你可以动态安装、卸载、开始、停止服务。达到动态配置管理的功能,大大增加程序的灵活性。在Eclipse中就用到了OSGI,eclipse自带了一个osgi容器Equinox用来运行和管理OSGI相关的功能。
Spring osgi是springsource基于spring framework开发的OSGI框架,继承了spring的特性,当然使用spring osgi的时候也需要导入spring framwork,现在spring osgi 已经变成了Eclipse 的gemini blueprint项目。由于本人也在学习之中,具体的细节我也不太清楚,希望与各位分享讨论。
这个实例文章,我们将运行一个简单的Spring osgi示例。首先我们需要建立一个项目用来提供Spring osgi运行相关的类库,我们采用maven来获取类库,maven的操作就不多讲了。这里只是涉及简单操作。
这个程序我所用到的所有资源:
Eclipse 3.7
Java SDK 1.6
Maven 3.0、m2e插件
Spring framework 3.0 、spring source tool 插件
Spring osgi 1.2.1
下面我们就开始一步一步的操作:
依次点击File–>New–>Project–>选中General下面的Project(建立常规项目)
弹出新建项目对话框里面,在项目名称里面填入SpringDMTarget,点击Finish结束。
在项目根目录下创建一个target目录,并创建一个pom.xml文件,创建成功后,项目目录如下:
由于pom文件里面的依赖关系很多,这里就不一一列出了。下面贴出源文件:
pom (点击下载)
你需要做的就是改变其中一行,把它改成你的电脑的SpringDMTarget项目target的绝对路径:
D:javaSpring-DM-Targettarget
然后选中pom.xml右键点击run as –>Maven install 即可开始运行maven,如果本地没有需要的包,maven会自动下载。等待一段时间后(时间长短由网速快慢而定)。只要看到控制台显示 BUILD SUCCESS 则表明maven 已经成功下载并将包复制到目标目录了。选中项目,右键点击refresh即可看到target目录下已经下载好了相关的包。
接下来我们就需要配置运行环境了。依次点击Windows–>Preferences–>Plug in Development–>Target Platform 出现如下界面
点击Add按钮,新建一个目标运行环境。选择Nothing:Start with an empty tarfget defination.点击Next,在这个对话框中Name属性行填入对运行环境的命名:我们就填Spring DM,点击右边的Add按钮,弹出Add Content对话框,
选择Directory点击Next,在下页对话框点击Browse 从电脑中找到SpringDMTagret项目的target目录。完成后将看到,目录中的包已经全部导入了,点击Finish。选中我们新建的运行环境。
然后配置我们的项目运行选项,我们需要以Osgi Framework形式运行。选中项目,邮件点击Run As–>Run configurations,进入页面
选中 OSGI Framework,右键选择New ,我们可以看到系统已经默认将target platform中所有的包已经选中了。点击RUN,即可运行了。如果出现如下界面即说明运行成功了。
你可以在eclipse 命名行中输入ss查看所有服务运行状态。
log4j:WARN No appenders could be found for logger (org.springframework.osgi.extender.internal.activator.ContextLoaderListener). log4j:WARN Please initialize the log4j system properly.
他提示我们Log4j没有正确配置,下面我们将修复这个“Bug”,各位请看第二讲吧。
Spring OSGI入门 Hello World(2) 处理Log4j “WARN No appenders could be found for logger”