发布《osgi实战》正式版

在收集了大家对于osgi opendoc预览版的意见后,做出了一些改动,形成了现在的正式版,在此特别感谢一餐三碗、jazzy、caoxg以及brokendoor等朋友对预览版提出的建议,在预览版的基础上,正式版做出了如下的改动和内容的增加:

增加基于bridge方式开发b/s应用的章节;

增加对于configuration admin serviceevent admin service讲解的章节;

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

增加面向接口开发章节;

格式编排;

正式版的下载地址为:


压缩包中包含了osgi opendoc的pdf、随文发布的代码以及可运行包。

posted on 2006-08-25 12:18 bluedavy 阅读(21049) 评论(55)     所属分类: osgi、soa、sca

# re: 发布osgi opendoc正式版 2006-08-25 15:52

strong re!  回复     

# re: 发布osgi opendoc正式版 2006-08-26 16:13

不能下载:(  回复     

# 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

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

先下了看看,有心得了再了跟各位侃侃  回复     

# re: 发布osgi opendoc正式版 2006-11-01 09:51

这个技术很不错
我想在一个已有的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的门.
不过看了你的,我有两个地方不太懂(当然我只是粗略的看了前面的部分),一个是您说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

在实践《实战》的时候,发现一个问题,请教一下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

下载了最新的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

将eclipse换成全新的3.2.1版本就ok了,奇怪的问题  回复     

# re: 发布osgi opendoc正式版 2006-11-26 17:51

@bluedavy
真是惭愧啊,呵呵,我当时没看清楚。多谢bluedavy的金星火眼啊,:)  回复     

# re: 发布osgi opendoc正式版 2007-03-04 07:46

不错,正在学习,多谢!  回复     

# re: 发布osgi opendoc正式版 2007-03-19 10:38

有谁知道bluedavy的电子邮件哦  回复     

# re: 发布osgi opendoc正式版 2007-03-19 21:10 bluedavy

:),可以在这里直接说...  回复     

# re: 发布osgi opendoc正式版 2007-03-22 11:07

我希望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

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

bluedavy,
thanks very much.
问题已经解决了,这几日一直没上网,耽误来致谢了:)  回复     

# re: 发布osgi opendoc正式版 2007-04-25 14:23

请教一个问题,我照着实战的步骤将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

不好意思,打字太快了,这句话“下面通过add按钮已经讲orgv.riawork.demo.service.user添加进去”应该改为“下面通过add按钮已经将org.riawork.demo.service.user添加进去”。
请指教。  回复     

# re: 发布osgi opendoc正式版 2007-04-29 16:59

已经将问题解决了,原因是依赖的问题,要先建立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

好东西学习  回复     

# re: 发布osgi opendoc正式版 2007-08-28 14:37

看来搞osgi的人蛮多  回复     

# re: 发布《osgi实战》正式版 2007-11-27 10:12

第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

我按照 你建议的ds 方式重构了 登入模块, 为什么运行时出现not found 404?
查不到原因:(  回复     

# re: 发布《osgi实战》正式版 2007-12-07 10:08 bluedavy

@jenny liang
请在console中输入log,看看有没有什么错误信息提示!  回复     

# re: 发布《osgi实战》正式版 2008-03-05 16:42

‘目前国外对这方面其实也属于摸索阶段,如果现在我们就能够对osgi这样优秀的插件体系结构进行足够的熟悉和关注,那么也许我们能够有机会第一次提出更为领先的设计思想,而不是一直在思想级别远落后于国外,被国外牵着鼻子走’

不错!
由于工作的需要,正考虑其c#实现  回复     

# re: 发布《osgi实战》正式版 2008-05-30 14:58

很强大的框架,以前短视了啊  回复     

# re: 发布《osgi实战》正式版 2008-07-15 14:40

首先非常感谢你的贡献!我看你了的文章以后照着你说的做了一个demo
但在ref = bc.getservicereference(httpservice.class.getname());这的时候 ref总是为null 不知道为什么,希望能指点一下  回复     

# re: 发布《osgi实战》正式版[未登录] 2008-07-22 16:38

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

# re: 发布《osgi实战》正式版 2008-09-30 15:59

正在看,正在学习  回复     

# re: 发布《osgi实战》正式版 2008-11-03 11:24

请教一下:在您的大作《osgi实战》中提到:“目前ds的实现还处于测试阶段,equinox team认为使用ds可能会产生效率问题,同时不适合在多线程情”,我想问一下:ds目前已经正式发布,那么是否还存在上述的效率问题?多线程问题?对于上述的问题是否有什么解决建议?
谢谢。  回复     

# re: 发布《osgi实战》正式版 2009-03-19 17:51

最近在项目中接触到了osgi,以前也是在寻找不同的模块之间可以用一种热插拔的方式来实现开发和部署的方式,现在才发现osgi原来早就可以让我这样做了,刚刚接触,就从最基础的开始吧。  回复     

# re: 发布《osgi实战》正式版 2009-06-16 10:39

请问你的osgi实战篇 提供的demo样例的 用户名和密码是什么呢?  回复     

# re: 发布《osgi实战》正式版[未登录] 2010-05-18 10:48

又下不了了!  回复     

# re: 发布《osgi实战》正式版 2011-06-06 15:45

请问,我创建了一个servlet,利用plug-in.xml进行映射后,在映射的package中使用了一个有4个服务实现的接口,在servlet中用到了getservicereference()。除了servlet包,没有其他的active包进行处理,返回了null。这应该怎么解决?  回复     

# re: 发布《osgi实战》正式版 2012-02-20 14:32

非常感谢分享。  回复     

# re: 发布《osgi实战》正式版[未登录] 2012-05-17 10:16

有下载不了了啊  回复     

# re: 发布《osgi实战》正式版[未登录] 2012-05-17 10:25

谁有代码方便的话发我邮箱:152070765@qq.com  回复     

# re: 发布《osgi实战》正式版 2015-01-01 12:06

我也下载不了啊~~有好心人能发我一份不  回复     


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


网站导航:
              
相关文章:
 

公告

 













导航

2006年8月
303112345
6711
141617
20212326
303112
3456789

统计

随笔分类

随笔档案

文章档案

blogger's

搜索

最新评论

阅读排行榜

评论排行榜

"));
网站地图