12
返回列表 发新帖
楼主: jieforest

模块化Java

[复制链接]
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
11#
 楼主| 发表于 2010-2-10 10:35 | 只看该作者
注意

声明式服务让连接OSGi服务更加容易。可是还有几点需要注意。

    * DS bundle需要安装并启动,以把组件连接起来。这样,DS bundle作为OSGi框架启动部分的一部分来安装,比如Equinox的osgi.bundles或Felix的felix.auto.start。
    * DS通常有其他依赖需要安装。以Equinox为例,要包括equinox.util bundle。
    * 声明式服务是OSGi Compendium Specification的一部分,而不是核心规范的一部分,因此对于服务接口通常需要由一个独立的bundle提供。在Equinox环境下,是由osgi.services提供,但在Felix环境下,接口由SCR(Service Component Registry——服务组件注册)bundle自身输出。
    * 声明式服务可以用properties来配置。通常利用OSGi Config Admin服务;尽管这是可选的。因此DS的有些部分需要运行Config Admin;实际上,Equinox 3.5有一个bug,如果要用Config Admin,它需要在DS(Declarative Services)之前启动。这往往要求使用start-up 属性,以确保满足正确的依赖。
    * OSGI-INF目录(与XML文件一起)需要被包含进bundle中,否则DS看不到它。你还需要确保Service-Component头在bundle的manifest中存在。
    * 还可能要用Service-Component: OSGI-INF/*.xml来包含所有组件而不是逐个罗列其名字。这也允许fragment给一个bundle增加新组件。
    * bind和unbind方法需要synchronized以避免潜在的竞争情况出现,尽管在AtomicReference之上使用compareAndSet()还可以被用作单个服务的non-synchronized占位符。
    * DS组件不需要OSGi接口,这样,它可以在其他控制反转模式(如Spring)里被模拟来测试或使用。可是Spring DM 和OSGi Blueprint服务都可用来组织服务,这就留作将来的话题吧。
    * DS 1.0 没有定义默认的XML命名空间;DS 1.1 增加了 http://www.osgi.org/xmlns/scr/v1.1.0命名空间。如果文件中没有出现命名空间,就认为其兼容DS 1.0。

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
12#
 楼主| 发表于 2010-2-10 10:35 | 只看该作者
总结

本文中,我们讨论了如何将我们的实现与OSGi API解耦,并使用哪些组件的声明式描述。声明式服务提供了组织组件和注册服务的能力,帮助避免启动顺序依赖。另外,动态本质意味着当我们的依赖服务起停时,组件/服务也随之起停。

最后,无论使用DS还是手动管理服务,都使用的是相同的OSGi服务层以便通信。因此,一个bundle可以通过手动方法提供服务,另一个可以用声明式服务来消费它(反之亦然)。我们应能够混合并匹配1.0.0和1.1.0实现,并且它们应能透明地工作。

使用道具 举报

回复
论坛徽章:
131
乌索普
日期:2017-09-26 13:06:30马上加薪
日期:2014-11-22 01:34:242014年世界杯参赛球队: 尼日利亚
日期:2014-06-17 15:23:23马上有对象
日期:2014-05-11 19:35:172014年新春福章
日期:2014-04-04 16:16:58马上有对象
日期:2014-03-08 16:50:54马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
13#
发表于 2010-2-10 22:56 | 只看该作者
nice job

使用道具 举报

回复
论坛徽章:
131
乌索普
日期:2017-09-26 13:06:30马上加薪
日期:2014-11-22 01:34:242014年世界杯参赛球队: 尼日利亚
日期:2014-06-17 15:23:23马上有对象
日期:2014-05-11 19:35:172014年新春福章
日期:2014-04-04 16:16:58马上有对象
日期:2014-03-08 16:50:54马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
14#
发表于 2010-2-10 22:56 | 只看该作者
明天就去学

使用道具 举报

回复
论坛徽章:
131
乌索普
日期:2017-09-26 13:06:30马上加薪
日期:2014-11-22 01:34:242014年世界杯参赛球队: 尼日利亚
日期:2014-06-17 15:23:23马上有对象
日期:2014-05-11 19:35:172014年新春福章
日期:2014-04-04 16:16:58马上有对象
日期:2014-03-08 16:50:54马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
15#
发表于 2010-2-10 23:13 | 只看该作者
看来osgi是趋势啊

使用道具 举报

回复
论坛徽章:
131
乌索普
日期:2017-09-26 13:06:30马上加薪
日期:2014-11-22 01:34:242014年世界杯参赛球队: 尼日利亚
日期:2014-06-17 15:23:23马上有对象
日期:2014-05-11 19:35:172014年新春福章
日期:2014-04-04 16:16:58马上有对象
日期:2014-03-08 16:50:54马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
16#
发表于 2010-2-10 23:14 | 只看该作者
sap的下一代服务器也是建立在这个基础之上

使用道具 举报

回复
论坛徽章:
164
秀才
日期:2015-11-11 09:58:34
17#
发表于 2010-2-17 14:07 | 只看该作者
nice job

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表