B

3

点赞

1

回复

5030

浏览

初次接触OSGI Blueprint

BLUEPRINT简介 看了《 动态的OSGi服务 http://tianmaying.com/tutorial/osgi service 》后,我们知道,由于OSGI服务的动态性,引用OSGI服务需要大量的代码才可以确保正常。可以想象,如果应用使用了大量的OSGI服务的话,直接使用OSGI API开发OSGI应用的方式显然是不合适的。幸好,OSGI规范里为我们提供了很多方便的方式去使用这些OSGI服务,包括Declarative Service(声明式服务DS)、Blueprint、iPojo等等。 下面,我们来了解一下Blueprint。说到Blueprint,我们首先要提及Spring,相信很多java开发人员都会接触过Spring,作为一个成功的依赖注入(DI)实现框架,Spring被十分广泛地应用在很多java项目中。为了适应OSGI的动态环境,spring发展出spring dynamic modules(SpringDM),Blueprint的规范则是来源于SpringDM的进一步发展。目前,Blueprint规范主要有两个实现:Aries blueprint和Gemini blueprint,它们分别来自Apache和Eclipse两个开源组织。我们后续的课程主要基于Aries Blueprint的实现。Blueprint可以象Spring那样,通过XML的方式构建应用,当然也可以通过Blueprint annotation的方式实现同样的目的。由于XML可以和bundle分离,单独部署到servicemix上,所以比annotation的方式更具灵活性,所以我们推荐使用XML的方式。由于Blueprint和spring的渊源,两者在语法方面十分相似,有spring应用经验开发人员会十分轻松地掌握Blueprint。 BLUEPRINT的入门例子:OSGI服务的注册 我们先来看一个blueprint的简单例子demo6,demo6用blueprint的方式实现和demo2_2一样的功能:发布一个ICalculation的OSGI服务。在demo6中,我们去掉了Activator,同样在Manifest.mf也删除了Bundle Activator项--也就是说,我们不需要写activator的代码啦发布OSGI服务了。我们在demo6里写了一个com.ponder.Demo.demo2.contract.ICalculation接口的实现类com.ponder.Demo.demo6.Impl.Calculation。同时,我们在项目的resources下新建了一个OSGI INF/blueprint的文件夹,里面放了一个xml文件demo6bp.xml,这个文档就起和spring的ApplicationContext.xml类似的作用。以下是这个xml的内容: ...

blueprintosgijava

新建主题 记录代码

学员动态

  • b**i添加了笔记:以加法运算为例,如果...
  • k**5添加了笔记:Java平台提供了很...
  • S**S评论了a**e在课程中的作业:List<Strin...
  • t**t在课程作业中回复了老师:一直显示没有加.后面...
  • S**S回复了咲**i在课程中的问题:有两个类 一个是Po...
  • c**e向课程作业中提交了代码
  • F**n向课程作业中提交了代码
  • T**M添加了笔记:变量一般都是以小写开...
  • S**S评论了d**g在课程中的作业:没什么问题...
  • j**e在课程作业中回复了老师:怎么调用 不同数据类...
  • 天**君回复了咲**i在课程中的问题:后面会讲解代码的意思...
  • 天**君回复了斑**斓在课程中的问题:欢迎来到天码营学习,...
  • 一**狗添加了笔记:increase(i...
  • t**t向课程作业中提交了代码
  • t**t添加了笔记:意实际传入的类型参数...
  • 天**君回复了咲**i在课程中的问题:你理解和教程不太一样...
  • F**e向课程作业中提交了代码
  • 天**君回复了咲**i在课程中的问题:欢迎来到天码营学习,...
  • F**e向课程作业中提交了代码
  • F**e向课程作业中提交了代码
  • b**i添加了笔记:1.public s...
  • d**7向课程作业中提交了代码
  • d**7向课程作业中提交了代码
  • t**t添加了笔记:因此,在方法执行时,...
  • c**e向课程作业中提交了代码
  • S**S回复了咲**i在课程中的问题:你仔细看下应该有 两...
  • 咲**i在课程中提出了问题:对呀 如果是在cla...
  • d**0在课程作业中回复了老师:这个i初始化表述为什...
  • a**e向课程作业中提交了代码
  • t**t添加了笔记:编译器会将初始化构造...
  • a**e在课程作业中回复了老师:[博客创建时间] ...
  • 斑**斓添加了笔记:public sta...
  • b**i添加了笔记:2.注意System...
  • b**0添加了笔记:Integer in...
  • 天**君评论了d**g在课程中的作业:你的截图中不是有编译...
  • w**n添加了笔记:Servlet AP...
  • 天**君回复了A**e在课程中的问题:你用代码和代码注释的...
  • d**g在课程作业中回复了老师:那怎么设置输入呢...
  • 咲**i在课程中提出了问题:老师我虽然完成了这个...
  • 8**u添加了笔记:包装 Integer...
  • 天**君评论了d**g在课程中的作业:你的代码有编译错...
  • c**e在课程作业中回复了老师:oh thx btw...
  • t**t添加了笔记:泛型类支持多个类型参...
  • d**g在课程作业中回复了老师:老师,我找到cons...
  • c**e在课程作业中回复了老师:understand...
  • 天**君回复了h**g在课程中的问题:看看提示信息中那个l...
  • R**d向课程作业中提交了代码
  • 天**君回复了l**9在课程中的问题:欢迎来到天码营学习,...
  • z**3向课程作业中提交了代码
  • k**5添加了笔记:除了逐个类的引入之外...
  • 2**4添加了笔记:你也可以直接使用Sy...
  • d**g在课程作业中回复了老师:可是运行之后显示这一...
  • s**9向课程作业中提交了代码
  • L**R添加了笔记:'=='和'!='作...
  • 斑**斓添加了笔记:方法名相同,但是参数...
  • 天**君回复了q**5在课程中的问题:欢迎来到天码营学习,...
  • R**c向课程作业中提交了代码
  • 天**君回复了R**c在课程中的问题:欢迎来到天码营学习,...
  • R**d向课程作业中提交了代码
  • S**S评论了d**0在课程中的作业:因为 前 面几项 是...
  • d**7向课程作业中提交了代码
  • w**w向课程作业中提交了代码
  • l**r向课程作业中提交了代码
  • d**g在课程作业中回复了老师:先前不是您说没问题的...
  • 一**狗在课程中提出了问题:为什么不直接构造第三...
  • 天**君回复了R**d在课程中的问题:欢迎来到天码营学习,...
  • v**s向课程作业中提交了代码
  • d**7在课程作业中回复了老师:老师,我这个题 做不...
  • v**s向课程作业中提交了代码
  • b**g添加了笔记:Java要求在使用一...
  • T**M向课程作业中提交了代码
  • c**e向课程作业中提交了代码
  • a**e在课程作业中回复了老师:喔,谢谢啊。帮我解锁...
  • 天**君评论了j**e在课程中的作业:看看编译错误提示,你...
  • z**3向课程作业中提交了代码
  • R**c向课程作业中提交了代码
  • 天**君回复了a**e在课程中的问题:欢迎来到天码营学习,...
  • d**7向课程作业中提交了代码
  • d**g在课程中提出了问题:老师,请问代码哪里出...
  • 天**君评论了d**g在课程中的作业:要设置输...
  • j**e向课程作业中提交了代码
  • 斑**斓添加了笔记:String for...
  • S**S评论了a**e在课程中的作业:List<Strin...
  • k**5添加了笔记:import jav...
  • d**g在课程中提出了问题:public voi...
  • t**t添加了笔记:而对于静态变量在内存...
  • t**t添加了笔记:,且每个代码块只能执...
  • a**e向课程作业中提交了代码
  • c**e在课程作业中回复了老师:what is th...
  • 咲**i在课程中提出了问题:还有就是 我用的ec...
  • 8**u向课程作业中提交了代码
  • 天**君回复了R**d在课程中的问题:欢迎来到天码营学习,...
  • 天**君评论了d**g在课程中的作业:你把代码贴到本地。注...
  • R**c向课程作业中提交了代码
  • F**e添加了笔记:Java是一种大小写...
  • d**g添加了笔记:public voi...
  • t**t添加了笔记:泛型类支持多个类型参...
  • c**e在课程作业中回复了老师:And, why i...
  • b**0添加了笔记:String str...
  • a**e向课程作业中提交了代码
反馈意见