BlueDavy之技术Blog

理论不懂就实践,实践不会就学理论!

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  246 随笔 :: 2 文章 :: 1324 评论 :: 1 Trackbacks
在收集了大家对于OSGI Opendoc预览版的意见后,做出了一些改动,形成了现在的正式版,在此特别感谢一餐三碗、jazzy、caoxg以及brokendoor等朋友对预览版提出的建议,在预览版的基础上,正式版做出了如下的改动和内容的增加:

增加基于Bridge方式开发B/S应用的章节;

增加对于Configuration Admin ServiceEvent Admin Service讲解的章节;

增加OSGI关键部分讲解章节;

增加面向接口开发章节;

格式编排;

正式版的下载地址为:
http://www.riawork.org/opendoc/OSGI_Opendoc.rar

压缩包中包含了OSGI Opendoc的PDF、随文发布的代码以及可运行包。
posted on 2006-08-25 12:18 BlueDavy 阅读(6787) 评论(46)  编辑  收藏 所属分类: OSGi、SOA、SCA

评论

# re: 发布OSGI Opendoc正式版 2006-08-25 15:52 kruce
strong re!  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-08-26 16:13 zhishui
不能下载:(  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-08-26 16:37 BlueDavy
...不好意思,现在服务器出了点问题......恢复后我会在这里发回复通知,多谢!  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-08-26 17:36 BlueDavy
已恢复,请下载!  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-09-01 00:13 迷你虾
网站连不通,出了什么问题?  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-09-01 14:09 BlueDavy
由于服务器硬盘出了点问题,等恢复后我会在这发出通知,多谢!  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-09-02 08:12 quaff
UserValidatorWebBundle
org.riawork.demo.web.Activator
ServiceReference ref應該作為一個局部變量,因為org.eclipse.equinox.http停止然後重新開始會造成NPE
ref指向的還是原來的HttpService,下面得到的http為null
HttpService http = (HttpService) bc.getService(ref);
另外監聽HttpService的unregistering事件然後調用unregisterServlet方法沒必要,此時HttpService已經unregistered,取不到他的引用,沒法unregister Servlet,resources,我猜HttpService unregister的時候會自動unregister上面的servlet,resources


另外有個問題,黨註冊多個Service到一個名字的時候,根據這個名字取得Service的優先級是根據Bundle的名字排序,如何自己定制規則  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-09-02 12:56 BlueDavy
服务器已恢复,需要下载Opendoc的XDJM们可以下载了。  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-09-02 21:44 BlueDavy
@quaff
嗯,关于ref变量的问题指正的有道理,多谢,多说一句,还是在使用DS监控服务的状态的时候更加容易控制..
之前的HttpService在unregister本身的时候是没有unregister上面的servlet和resource的,现在的Equinox的Http Service实现我目前还不确定。
关于第二个问题,目前好象是没有什么自己定制规则的方法的,估计只能自己去实现下,按这种来做一个COR Pattern实现是挺爽的...  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-09-08 17:00 蚂蚱
根据opendoc作了个例子,感觉osgi是挺值得关注的一项技术,但我有个问题请教一下,能否在一个bundle中提供多个服务?DS方式如何实现?不然的话,会造成模块的粒度太小,造成一个应用bundle数目太多,管理起来就比较麻烦了。  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-09-08 18:44 蚂蚱
@蚂蚱
刚才问的问题解决了,具体方法如下:
1、在OSGI-INFO目录下再建一个component1.xml配好自己新的组件
2、在META-INFO/MANIFEST.MF 引用部分改为Service-Component: OSGI-INF/component1.xml,OSGI-INF/component.xml


  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-09-18 15:42 小小凉粉
在UserValidatorWebBundle中的Activator中

ref = bc.getServiceReference(HttpService.class.getName());

这个方法得到的ref还是null啊  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-09-18 18:20 BlueDavy
@ 小小凉粉
请确认启动了Equinox的HttpService实现的Bundle。  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-09-19 18:25 小小凉粉
多谢多谢

现在OK了  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-09-30 15:45 gg
先下了看看,有心得了再了跟各位侃侃  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-01 09:51 OSGI
这个技术很不错
我想在一个已有的C/S结构的项目里面加入一个Bundle,在原来的工程中怎么调用这个Bundle的服务呢?  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-01 12:16 BlueDavy
@OSGI
...如果是采用OSGi的标准的Bundle的服务的概念的话现在是没法从外部进行调用的,如果一定要那么做的话只能是webservice之类的方式来处理了..
也许要等到SCA采用OSGi作为实现规范的那天这个问题才能解决。  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-07 12:57 吕品
我刚刚下载,大概看了一下.我接触JAVA的时间并不长,给我的感觉就是JAVA的各种框架和技术很多,学起来还真是不容易.关注OSGI是前段时间调研一个SIP终端时候偶然发现的,可以说,我现在还没入OSGI的门.
不过看了你的<OSGI实战>,我有两个地方不太懂(当然我只是粗略的看了前面的部分),一个是您说JAVA是编译性质的, 不是解释性质的,但是我据目前的了解,java应该是解释性质的吧.还有你说BMW采用OSGI颠覆了很多人对java系统的低效的认识,但是据我了解,OSGI本来就是用来作为设备管理的规范(我概念上可能混乱),所以我觉得应该是说java业界采用OSGI来作为自己实现JAVA系统的规范才对.
可能我的理解过于肤浅,我将继续关注您的BLOG,我从这里确实学到了好多知识.  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-08 17:31 BlueDavy
@吕品
没错,OSGi本来就是为了作为嵌入式设备管理的规范而制定的,至于"java业界采用OSGI来作为自己实现JAVA系统的规范"这句话我不太明白你具体的意思...
对于OSGi,如果仅从它制定的本意去看的话,那么作为企业应用的开发者会先入为主的认为OSGi没什么作用的,OSGi为Java系统规范的模块化和动态化的实现提供了指导,自然的就可以成为Java系统此方面的规范的参考,甚至直接成为规范,就像JSR 291.  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-08 18:54 吕品
我想模块开发的规范化粒度应该要大于bean之类的东西,但模块的复用和系统最初的"模块分解"方式应该有关系,两个设计师的模块分解方式同样可能完全不同,而且面对的需求也是难以确定的,也就是说一个项目开发的模块要部署到另一个项目上完全可能,但是他在另一个项目的作用可能就很局限.  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-08 19:02 吕品
re:2006-11-08 17:31 BlueDavy
我表达的确实不清楚,
对于"java业界采用OSGI来作为自己实现JAVA系统的规范"这句话
我只是想说,BMW用了它们自己业界的东西(它只是采用OSGI作为其底层架构,它并不是采用了一个java的系统),它这点上的成功不应该对人们改变java的认识产生影响,而是为JAVA系统的开发者提供了一个好的实现方案.  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-23 11:51 huang[匿名]
在实践《实战》的时候,发现一个问题,请教一下blueDavy:

就是我利用
osgi>services
发现了了服务:
{org.springframework.context.ApplicationContext}={org-springframework-context-service-name=org.springframework.osgi.samples.simpleservice-springApplicationContext, service.id=53}
Registered by bundle: initial@reference:file:E:/Workspace/spring-osgi/spring-osgi/samples/simple-service/simple-service-bundle/ [2362]


可是我利用如下语句来获取的时候,却返回null:

String filter = "(org.springframework.context.service.name=org.springframework.osgi.samples.simpleservice-springApplicationContext)";
ServiceReference[] rs = context.getAllServiceReferences(ApplicationContext.class.getName(), filter);

结果rs为null,不知道为什么。  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-23 14:51 坏男孩
同志们
辛苦

!  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-23 15:37 BlueDavy
@huang[匿名]
不知道这是不是你的键误:
filter应该是:
String filter="(org-springframework-context-service-name=org.springframework.osgi.samples.simpleservice-springApplicationContext)";  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-24 22:57 hiwzg
下载了最新的org.eclipse.equinox.servlet.api_1.0.0.v20060717.jar,org.eclipse.equinox.http_1.0.100.v20060821.jar。
放到Eclipse的plugins目录下。启动Eclipse,Run,New之后,并不会看到那些Plugin的选项啊。

只有两种:workspaces-plugins以及Target Platform。这是什么问题呢?

我用的Eclipse3.2。

这是什么问题?

  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-24 23:16 hiwzg
将Eclipse换成全新的3.2.1版本就OK了,奇怪的问题  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2006-11-26 17:51 huang[匿名]
@BlueDavy
真是惭愧啊,呵呵,我当时没看清楚。多谢BlueDavy的金星火眼啊,:)  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-03-04 07:46 zj
不错,正在学习,多谢!  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-03-19 10:38 atomy
有谁知道bluedavy的电子邮件哦  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-03-19 21:10 BlueDavy
:),可以在这里直接说...  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-03-22 11:07 kane
我希望trace我的rcp程序bundle activate的顺序,为此建了一个bundle叫osgi.monitor, 现在希望这个bundle能够先于rcp bundle被active。

在vm arguments里面加了-Dosgi.bundles=osgi.moniotr@start
但是这样导致rcp所需的bundles根本不被active了,整个app也不能启动。

想问问,怎样才能控制我的bundle active次序,而又不影响rcp app的运行。

谢谢  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-03-22 11:38 dauberfly
Thx.But, what is OSGi Opendoc?  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-03-22 22:18 BlueDavy
@kane
请仔细查看Opendoc里关于StartLevel Service部分的描述,可以通过那样的方法来设置Bundle的启动顺序。
  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-03-28 12:01 kane
BlueDavy,
Thanks very much.
问题已经解决了,这几日一直没上网,耽误来致谢了:)  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-04-25 14:23 yixilee
请教一个问题,我照着实战的步骤将LDAPValidatorBundle、DBValidatorBundle、ConfigFileValidatorBundle、UserValidatorBundle得Bundle工程建立以后,在Dependencies->Imported Packages下面通过Add按钮已经讲orgv.riawork.demo.service.user添加进去。可是为什么在上面几个Bundle工程中的以下语句都会报错呢?
import org.riawork.demo.service.user.Validator
对应的意思就是Validator类没有定义的吧。怎么解决这个问题呢?  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-04-25 14:26 yixilee
不好意思,打字太快了,这句话“下面通过Add按钮已经讲orgv.riawork.demo.service.user添加进去”应该改为“下面通过Add按钮已经将org.riawork.demo.service.user添加进去”。
请指教。  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-04-29 16:59 yixilee
已经将问题解决了,原因是依赖的问题,要先建立UserValidatorBundle,然后才建立其他的bundle。
另外一种方式是如果顺序不确定,得在其他的bundle中重新import package,即重新把org.riawork.demo.service.user添加进去。

另外,遇到了另外的一个问题,登录的时候,得依赖login.htm文件,而该文件是放在src目录下的,而实际调用的是bin目录下面的,按理说应该在编译的时候自动拷贝到bin目录下的,可是每次我都要人工讲该文件拷贝到bin下面才可以顺利通过web方式执行。不知道为什么?  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-06-07 20:59 bearhunter
好东西学习  回复  更多评论
  

# re: 发布OSGI Opendoc正式版 2007-08-28 14:37 姜利阳
看来搞OSGI的人蛮多  回复  更多评论
  

# re: 发布《OSGi实战》正式版 2007-11-27 10:12 BournCayon
第81页 共 90页中“
Bundle A需要使用实现了 org.riawork.demo.Opendoc 接口的类,在 OSGI 中一
种典型的做法就是: 将 org.riawork.demo.Opendoc 做为一个单独的 Bundle ,并 Export 中
org.riawork.demo 包,Bundle A 引用 org.riawork.demo 包,采用如下的方式调
用实现了接口的实例:OpenDoc service = (OpenDoc)context.getService(context.getServiceRefenerce(OpenDoc.class.getName()))”

按照这个方法,我也类似的写了一个(因为类似所以就不贴出来了),可是在context.getServiceRefenerce(OpenDoc.class.getName())返回的是null。为什么会这样?  回复  更多评论
  

# re: 发布《OSGi实战》正式版 2007-12-06 21:56 Jenny Liang
我按照 你建议的DS 方式重构了 登入模块, 为什么运行时出现Not Found 404?
查不到原因:(  回复  更多评论
  

# re: 发布《OSGi实战》正式版 2007-12-07 10:08 BlueDavy
@Jenny Liang
请在console中输入log,看看有没有什么错误信息提示!  回复  更多评论
  

# re: 发布《OSGi实战》正式版 2008-03-05 16:42 banian
‘目前国外对这方面其实也属于摸索阶段,如果现在我们就能够对OSGI这样优秀的插件体系结构进行足够的熟悉和关注,那么也许我们能够有机会第一次提出更为领先的设计思想,而不是一直在思想级别远落后于国外,被国外牵着鼻子走’

不错!
由于工作的需要,正考虑其C#实现  回复  更多评论
  

# re: 发布《OSGi实战》正式版 2008-05-30 14:58 jeasonzhao
很强大的框架,以前短视了啊  回复  更多评论
  

# re: 发布《OSGi实战》正式版 2008-07-15 14:40 ss
首先非常感谢你的贡献!我看你了的文章以后照着你说的做了一个demo
但在ref = bc.getServiceReference(HttpService.class.getName());这的时候 ref总是为null 不知道为什么,希望能指点一下  回复  更多评论
  

# re: 发布《OSGi实战》正式版[未登录] 2008-07-22 16:38 seventh
向BlueDavy大大请教一个问题:
关于你的OSGI开源文档,让我受益巨大,不过有点疑惑的是你举的动态验证的那个例子来对比使用OSGI和不使用OSGI的优劣.
不知是我太菜还是怎么回事,我用传统方式来实现发现根本不需要重写CLASSLOADER监测目录中类的变化,很简单,就像你说的那样,直接一个Validator接口,其他根据不同类型验证方式用不同实现哪,一个文本文件里面就是当前需要的某种验证类型的类完全限定名,写一个验证类直接读该文件反射实例化对象.不管是要切换验证类型或者是写了新验证类型实现类,都不用重启啊...
如果是切换已有验证类型,直接改配置文件,如果是有新的,直接将编译好的类放进类路径,改配置文件,立即生效...对于这个问题一直不解,请赐教!!!望解答,十分感谢!  回复  更多评论
  


标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-12-12 23:48 编辑过
 
 
相关链接:
网站导航: