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

新建主题 记录代码

学员动态

  • 三**年添加了笔记:行内元素与块元素也可...
  • 天**君评论了z**C在课程中的作业:那现在理解为什么游戏...
  • 天**君回复了w**7在课程中的问题:欢迎来到天码营学习,...
  • E**t在课程中提出了问题:同理:为什么myEn...
  • 天**君回复了T**i在课程中的问题:欢迎来到天码营学习,...
  • h**a向课程作业中提交了代码
  • D**8在课程作业中回复了老师:这里应该怎样返回把f...
  • w**6在课程作业中回复了老师:这里怎么写...
  • w**3回复了d**9在课程中的问题:要用包装类 Long...
  • D**8完成了课程的作业
  • d**9在课程中提出了问题:哦,好的,谢谢老师 ...
  • B**O向课程作业中提交了代码
  • 三**年添加了笔记:HTML中的标签元素...
  • 三**年添加了笔记:display还有其...
  • w**3评论了D**8在课程中的作业:this.direc...
  • z**y向课程作业中提交了代码
  • q**8向课程作业中提交了代码
  • c**t向课程作业中提交了代码
  • 三**年添加了笔记:如果三个方块都向左浮...
  • 天**君评论了z**C在课程中的作业:case KeyEv...
  • h**8向课程作业中提交了代码
  • f**o向课程作业中提交了代码
  • w**6在课程作业中回复了老师:打印的部分怎么写 刚...
  • D**8在课程作业中回复了老师:Math.abs()...
  • w**3评论了w**6在课程中的作业:实例化: Car c...
  • w**6向课程作业中提交了代码
  • z**C在课程作业中回复了老师:老师我实在不能理解,...
  • D**8在课程作业中回复了老师:这里不太理解如何在头...
  • 1**9在课程作业中回复了老师:麻烦老师帮看一下,还...
  • 三**年添加了笔记:postion属性具...
  • D**d评论了z**C在课程中的作业:changeDire...
  • h**a向课程作业中提交了代码
  • 天**君评论了z**C在课程中的作业:是说让你考虑怎么改这...
  • w**6在课程作业中回复了老师:这里应该怎么写...
  • D**8在课程作业中回复了老师:怎么刷新画布 画出身...
  • z**y向课程作业中提交了代码
  • z**C在课程作业中回复了老师:我运行的时候,初始方...
  • h**8向课程作业中提交了代码
  • 三**年添加了笔记:除了absolute...
  • D**8在课程作业中回复了老师:这里面的Math.a...
  • 三**年添加了笔记:Bootstrap ...
  • 天**君回复了m**a在课程中的问题:欢迎来到天码营学习,...
  • l**1评论了:收不到激活邮件啊,给...
  • w**3评论了D**8在课程中的作业:...
  • z**C向课程作业中提交了代码
  • 三**年添加了笔记:但是对于postio...
  • c**u在课程作业中回复了老师:不...
  • H**3向课程作业中提交了代码
  • E**t在课程中提出了问题:你好 那为什么这里的...
  • 三**年添加了笔记:基本选择器 类型选择...
  • d**9在课程中提出了问题:为什么一定要用Lon...
  • c**t向课程作业中提交了代码
  • w**3回复了d**9在课程中的问题:道理上Long lo...
  • w**3评论了w**6在课程中的作业:打印就是 Syste...
  • z**C在课程作业中回复了老师:如何判断瞬间按下多个...
  • h**a在课程中提出了问题:作业没通过 没有提示...
  • z**7向课程作业中提交了代码
  • z**C向课程作业中提交了代码
  • w**3评论了w**6在课程中的作业:看教程啊,这非常非常...
  • w**6在课程作业中回复了老师:这里怎么写 我刚学 ...
  • h**a向课程作业中提交了代码
  • w**3评论了c**u在课程中的作业:void speed...
  • D**8在课程作业中回复了老师:明白了 多谢...
  • 三**年添加了笔记:<style&...
  • h**8向课程作业中提交了代码
  • 奇**木向课程作业中提交了代码
  • h**a向课程作业中提交了代码
  • B**O向课程作业中提交了代码
  • w**3评论了D**8在课程中的作业:if(Math.ab...
  • w**6在课程作业中回复了老师:这样写对...
  • y**4完成了课程的作业
  • H**3向课程作业中提交了代码
  • d**d向课程作业中提交了代码
  • 天**君回复了小**茶在课程中的问题:欢迎来到天码营学习,...
  • v**y评论了:想问一下学完这个课程...
  • 天**君评论了z**C在课程中的作业:首先你运行时复现错误...
  • 三**年添加了笔记:列表组是灵活又强大的...
  • D**8在课程作业中回复了老师:this.direc...
  • h**8向课程作业中提交了代码
  • B**s评论了:@ModelAttr...
  • D**8在课程作业中回复了老师:不知道应该怎么...
  • 天**君回复了x**3在课程中的问题:欢迎来到天码营学习,...
  • h**8向课程作业中提交了代码
  • z**C在课程作业中回复了老师:应该是grid.ne...
  • d**9添加了笔记:增加abstract...
  • 三**年完成了课程的作业
  • l**5向课程作业中提交了代码
  • f**n向课程作业中提交了代码
  • w**3评论了w**6在课程中的作业:package co...
  • w**6在课程作业中回复了老师:这里搞不明白 能举个...
  • d**9添加了笔记:当try代码块中的语...
  • 三**年完成了课程的作业
  • x**4向课程作业中提交了代码
  • q**8向课程作业中提交了代码
  • w**3评论了D**8在课程中的作业:LinkedList...
  • 天**君回复了H**3在课程中的问题:欢迎来到天码营学习,...
  • w**6在课程作业中回复了老师:这里能看下示例吗...
  • 三**年添加了笔记:Bootstrap ...
  • f**o向课程作业中提交了代码
  • 三**年添加了笔记:说起CSS前缀,一般...
反馈意见