基于OSGi实现分布式服务框架历程(一)

写完之前的那篇基于OSGi实现服务框架的分析后,决定动手来实现一个基于OSGi的分布式服务框架,而其feature呢,就会遵照之前写的服务框架的要素来实现,根据之前的分析,将这个实现过程分为了三个大的步骤来完成:Spike阶段、实现阶段和测试阶段,Spike阶段用于完成几个关键问题的技术的研究和选型;实现阶段用于完成基于OSGi的分布式服务框架;测试阶段用于判断实现的分布式框架对于应用场景的符合程度、性能的情况。
首先进入Spike阶段,在Spike阶段需要完成服务注册、创建以及服务的proxy管理的技术研究和选型,这主要是因为我对这两部分的技术并不怎么熟悉,对于服务的注册和查找,可选的技术有两种:JNDI和JINI;对于服务的proxy的管理,可选的技术应该就是cglib这一种了,不过需要研究具体怎么用,在这篇blog中将介绍对于JNDI的Spike。
对于服务的注册和查找,首先想到的可用的技术莫过于JNDI了,JNDI作为java ee中重要的命名和查找的机制,和服务的注册、查找是非常吻合的,在做服务的注册和查找的技术的Spike时,主要从这么几方面去Spike:
1、怎么实现远程的将服务注册到服务中心?
      这个对于JNDI来讲,非常简单,在初始化jndi的context后,就可以通过context.bind或context.rebind来实现了。
      对于服务的远程注册来讲,在实现时是不注册服务的instance到服务中心的,只是注册服务的相关信息的对象。
2、在服务应用端怎么查找服务中心的服务?
      这个对于JNDI来讲,也很简单,通过context.lookup就可实现了。
      对于服务的远程引用和查找来讲,在实现时需要将context.lookup这种方式和DS方式融合。
3、有否现成可用的实现?
      有JBoss的JNP,从各类评价来说,还是不错的。
4、是否支持Cluster?
      JNP是支持Cluster。
5、可参考的资源有哪些?
      主要参考的资源有这两个网页:
      http://hankun.blogbus.com/logs/1774694.html
      http://blog.csdn.net/cjp472/archive/2003/10/28/17570.aspx
      关于JNDI cluster方面的资料:
      http://www.wangchao.net.cn/bbsdetail_30257.html
从上面几个方面来看,JNDI基本是满足服务的注册和查找的需求的,当然,在实现的时候还得做一定的改造,不过总体来说,还是不错的,等Spike完JINI后再来做出选择,为什么会想到JINI呢,就是因为著名的Newton项目了,Newton项目是基于OSGi+Jini实现的SCA框架,所以是值得参考的,欲知后事如何,请看下篇分解,:)。

>> 基于OSGi实现分布式服务框架历程(二)
>> 基于OSGi实现分布式服务框架历程(三)

posted on 2008-01-14 01:13 BlueDavy 阅读(10303) 评论(8)  编辑  收藏 所属分类: OSGi、SOA、SCA

评论

# re: 基于OSGi实现分布式服务框架历程(一) 2008-01-14 15:51 岑文初

看了三篇文章,也受益不少:),不过对于OSGI和SCA以及服务框架有自己一点想法,这儿写不下:),回blog写。不过以后有了你和我交流和学习,对将来完善动态载入的服务框架更加有信心了^_^  回复  更多评论   

# re: 基于OSGi实现分布式服务框架历程(一)[未登录] 2008-01-17 16:44 Young

我也在考虑如何将osgi引用到B/S结构的应用开发中来。我的想法是将osgi作为一个ejb应用放在应用服务器的ejb容器中运行,对外部的服务使用spring暴露为session ejb,共web容器中的应用或远程客户端使用。

这样的好处是既发挥了osgi搭建后台系统的优势,又不必强迫web应用的开发者学习osgi,他们可以继续发挥现有的web应用开发技能。

大侠意下如何?给点意见吧 :)  回复  更多评论   

# re: 基于OSGi实现分布式服务框架历程(一) 2008-01-17 22:36 BlueDavy

@Young
那么外部访问OSGi的服务到底是个怎么访问法呢?
通过那个暴露为ejb的OSGi的服务来路由访问其他的OSGi服务?  回复  更多评论   

# re: 基于OSGi实现分布式服务框架历程(一)[未登录] 2008-01-18 15:18 Young

简单说是这个思路。
具体说,一种想法是将ejb在语义上定义为数据访问接口。因为后台服务提供的大部分是数据访问类的服务(或同质的服务,比如流程的访问和提交),所以可以通过数据类型和有限的操作(比如增删改查),穷举全部的数据访问服务。

第二种想法是ejb提供类似osgi的服务查找功能,外部可以查找和使用特定的服务。但这样就同样需要处理服务类引用,声明周期管理等在osgi内部使用服务时碰到的问题,但总的来说,估计不是很难解决。  回复  更多评论   

# re: 基于OSGi实现分布式服务框架历程(一)[未登录] 2008-01-18 17:08 BlueDavy

@Young
按照你说的这种,我觉得没什么问题,因为你的业务层等其实是集中部署的对吧,那和传统的做法其实就不用有什么差别了,做个Facade的OSGi服务就OK了。  回复  更多评论   

# re: 基于OSGi实现分布式服务框架历程(一)[未登录] 2008-01-22 10:33 Young

@BlueDavy
多谢指点。你说了我才意识到通过部署到ejb容器中还提供了集中式服务的功能。  回复  更多评论   

# re: 基于OSGi实现分布式服务框架历程(一) 2008-01-22 11:26 BlueDavy

@Young
:),是的,ejb容器本身其实就是个服务中心,在加上cluster的话它也是个非常好的分布式服务中心。
只是在某些需求方面还需要修改才能达到真正的分布式服务框架的需求,例如服务的绑定不采用绑定服务实例的方法,本地服务和远程服务的透明调用等。
  回复  更多评论   

# wsdl+bpel+ode的整合 2010-12-17 18:03 小朱


我想利用 felix 实现的osgi 最后生成bundle的wsdl文件 ,加上bpel文件(也就是工作流) 通过ode 生成cbp文件, 希望大家提供思路  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

公告

 









feedsky
抓虾
google reader
鲜果

导航

<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

随笔分类

随笔档案

文章档案

Blogger's

搜索

最新评论

阅读排行榜

评论排行榜