Spring.DM版HelloWorld
本文主要描述使用Spring.DM2.0,创建OSGi的HelloWorld演示程序,理解Spring.DM的OSGi框架实现机制。
环境描述:
| 项目 | 版本 |
| Eclipse | 3.7.x |
| JDK | 1.6.x |
| Sprng.DM | spring-osgi-2.0.0.M1-with-dependencies 下载地址 |
一、环境准备
将spring-osgi-2.0.0.M1-with-dependencies ,解压到一个文件夹中,你能看到以下目录:

在Eclipse中点击菜单:File->Import,就会出现导入的对话框,如下图

选中“Plug-ins and Fragments”,点击“Next>”,就会出现导入选项对话框,如下图

在"Import From”中选择“Directory”,点及后面的”Browse”浏览我们刚才解压spring.dm的文件夹目录中的"dist“文件夹,然后点”Next>”,
会出现导入对话框,导入如下图选中的jar包,点击“finish”,如图所示

然后同上面的步骤,导入spring-osgi-2.0.0.M1-with-dependencies 解压目录中的lib,选择的jar包如下图所示,点击“finish”完成导入

一共从dist和lib目录里面导入了15个包,
- org.springframeork.osgi.bundle.core
- org.springframeork.osgi.bundle.extender
- org.springframeork.osgi.bundle.io
这3个包是spring.dm的核心包,extender包完成了服务的发布和注入的功能,它会在META-INF下的spring目录里面找xml文件,来完成配置工作;

这几个包是org.apache.commons.logging的依赖包,否则会提示如下错误:
Reason: Missing Constraint: Import-Package: org.apache.commons.logging; version="[1.1.1,2.0.0)"
最后你能看到在Package Explorer视图里面看到如下的结果:

到这里就准备好了包引用环境
二、配置OSGi运行配置
在eclipse菜单操作:Run->Run Configurations…,就会出现运行配置的窗口,在左面的面板中右键点击“OSGi Framework”,点击“New”,如下图所示

会出现运行配置对话框,如下图所示;

在上图中Workspace中选择运行spring.dm所需要的bundle,所上图所示那个打的红色矩形框,在Target Platform中选择一个osgi和一个loggin包,如上图所示,点击checkbox”Only show selected”,应该和上图一样,点击”Validate Bundles”验证绑定是否正确,我们先把这个run configuration的name设置为:Run_Spring.DM,点击”Apply”按钮保存,最后点击“Run”按钮,运行配置,在Console窗口中能够看到,如下图:

有一个警告(要解决警告问题请查看:Spring.DM web 开发环境搭建 中注意事项章节),先忽略,在控制台按回车键,然后输入:ss,查看插件运行状态,如下图所示

这表示,我们的spring.dm环境已经配置好了,接下来我们就要来个HelloWorld了!
三、创建Helloworld演示
在Eclipse菜单中:File->New->Project…,在New Project对话框中选择如下图所示(plug-in project)

在上图中点击“Next>”就会出现新建工程对话框,选择如下图所示

在上图中把项目名称改为:spring.dm.helloworld,在“Target Platform”中选择”an OSGi framework:standard”,点击“Next>”

在上图中设置:Provider,然后点击“Finish”完成项目的创建,新项目创建好后,如下图中红框所示

由于我们开发spring.dm不需要Activator,所以要把src下面包“spring.dm.helloworld”中的“Activator.java”删除掉,删除后如下图所示

在上图中的META-INF中的MANIFEST.MF文件中出现了一个警告,我们双击打开MANIFEST.MF文件,选择MANIFEST标签,如下图所示

在上图中出现了一个警告标志,如长红色矩形框所示,我们把这一行删除掉,然后保存;否则会出现找不到Activator的错误。目前项目如下图所示:

在上图中src下面包spring.dm.helloworld包下面创建一个HelloWorld的java类文件,如下图所示


在HelloWorld类中写start和stop两个方法,打印出下面的状态,如下所示,

在工程中META-INF文件夹中,新建“spring”文件夹,并在spring文件夹中新建一个helloworld.xml文件,如下图所示:

helloworld.xml文件的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--Bean定义 -->
<bean name="hello" class="spring.dm.helloworld.HelloWorld" init-method="start" destroy-method="stop" >
</bean> </beans>
这个bean的配置和我们在使用spring的配置的时候一样,当我们启动helloworld的时候会调用start方法,控制台会出现“我正在启动”,当我们停止helloworld的时候,会调用stop方法,在控制台会打印出“我正在关闭”。
好了,我们的helloworld已经完成了
四、运行HelloWorld
在eclipse菜单中:Run->Run Configurations…,就会出现以下界面,如下图所示

在上图中Workspace中把我们新建的helloworld包选中,如上图所示,点击“Run”按钮,运行,我可以看到如下结果,如下图所示:

我们在控制台中回车,然后输入:ss ,回车,对状态进行查询,结果如下

在上图中我们helloworld已经启动了,我们用命令来停止helloworld,在控制台输入stop 23,回车

我们在控制台可以看到,输出了“我正在关闭”,输入ss再查询状态,如下图所示:

在上图中可以看到,我们helloworld已经处于resolved状态了。
目前我们已经成功地helloworld出来了!
Spring.DM版HelloWorld的更多相关文章
- Spring.DM web开发环境搭建
作为一个初学者来说,搭建好Spring.DM 的web开发环境还是有些麻烦的.我就遇到了N多麻烦,走了很多弯路.本文介绍了2种比较简单的搭建Spring.DM OSGi web开发环境的搭建. 第 ...
- Spring DM所提供的Bundle监听接口OsgiBundleApplicationContextListener
通过使用Spring DM提供的监听接口,我们可以更好的对服务进行管控,其实该接口也非常简单就能使用上,只要自定义一个类实现OsgiBundleApplicationContextListener接口 ...
- 跟着刚哥学习Spring框架--创建HelloWorld项目(一)
1.Spring框架简介 Spring是一个开源框架,Spring是在2003年兴起的一个轻量级的开源框架,由Rod johnson创建.主要对JavaBean的生命周期进行管理的轻量级框架,Spri ...
- OSGI引入Spring DM实现对服务对象的管理
一.异同 熟悉Spring的应该也都了解它的IOC的功能,那么对于在OSGI开发环境下,在使用IOC功能时有什么不同呢?最重要的一点就是Spring上下文对象,每个Spring-Powered Bun ...
- Spring界的HelloWorld
1.Spring依赖的jar包下载网址: https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-loca ...
- 第二个基础框架 — spring — xml版,没用注解 — 更新完毕
1.什么是spring? 老规矩:百度百科一手 这上面说得太多了,我来提炼一下: spring就是一个轻量级的控制反转( IOC ) 和 面向切面编程( AOP ) 的容量框架.总的来说:本质就是对j ...
- Spring DM 2.0 环境配置 解决Log4j问题
搭建 spring dm 2.0 环境出的问题 log4j 的问题解决办法是 一.引入SpringDM2.0的Bundle,最后完成如下图所示:注意:要引入slf4j.api.slf4j.log4j. ...
- 在IDEA中使用Spring写一个HelloWorld
准备工作 1.使用IDEA2018专业版, 我试了IDEA2019教育版和IDEA2020社区版,都无法顺利创建一个Spring项目,实在是恼火,一气之下,统统卸载掉. 重装了一个IDEA2018专业 ...
- Delphi_01_控制台版HelloWorld
对于Windows下的控制台编程,我相信很多人都不陌生.而C语言开始的著名的“Hello world”程序基本是学习编程的第一步.我想对于 RAD开发,大家熟悉的一般都是GUI编程,而对于consol ...
随机推荐
- F5 BIG-IP 远程代码执行RCE(CVE-2020-5902)复现
漏洞简介 F5 BIG-IP 是美国``F5公司一款集成流量管理.DNS.出入站规则.web应用防火墙.web网关.负载均衡等功能的应用交付平台. 在F5 BIG-IP产品的流量管理用户页面 (TMU ...
- 个人网站迁移之旅:从博客到知识库,从 Hexo 到 Docusaurus
或是出于跟风,或是为了简历能好看点,2020 年 2 月,在翻看了中文互联网大量的「免费个人网页搭建教程」后,我选择了 Hexo + Github Pages 的方案,找了一款看上去还不错的主题,搭建 ...
- Django 小实例S1 简易学生选课管理系统 5 实现注册功能
Django 小实例S1 简易学生选课管理系统 第5节--实现注册功能 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新的额外知识点: ...
- python -三元表达式、列表生成式、字典生成式
目录 1.三元表达式 2.列表生成式 3.字典生成式 1.三元表达式 定义格式:true_return if condition else false_return if 后条件成立返回,true_r ...
- python实现模板匹配
目录: (一)原理 (二)代码实现和几种常见的模板匹配算法 正文: (一)原理 在待检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大. 作用有局限性, ...
- [bzoj1305]跳舞
考虑如果没有k个人,那么就是裸的二分答案+最大流对于这k个人,再在原来的每一个点裂点,中间的流量为k,然后裂出来的点向所有不能匹配的点连边,再二分答案+最大流即可 1 #include<bits ...
- String和其他数据类型
1.String类. 1.1.对String在内存存储方面的理解: 第一:字符串一旦创建不可变. 第二:双引号括起来的字符串存储在字符串常量池中. 第三:字符串的比较必须使用equals方法. 第四: ...
- final关键字、抽象类、抽象类和接口的区别
1.final关键字 1.1.final修饰的类无法继承. 1.2.final修饰的方法无法覆盖. 1.3.final修饰的变量只能赋一次值. 1.4.final修饰的引用一旦指向某个对象,则不能再重 ...
- Java 插入html字符串到PPT幻灯片
通过Java后端代码操作PPT幻灯片时,可直接在幻灯片中绘制形状,并在形状中添加文本字符串内容.本篇文章,介绍一种通过html字符串来添加内容到PPT幻灯片的的方法,可添加文字.图片.视频.音频等.下 ...
- 洛谷 P7116 - [NOIP2020] 微信步数(拉格朗日插值)
洛谷题面传送门 我竟然独立切掉了这道题!incredible! 纪念我逝去的一上午(NOIP 总时长 4.5h,这题做了我整整 4.5h) 首先讲一下现场我想的 80 分的做法,虽然最后挂成了 65 ...