- 博客(50)
- 资源 (11)
- 收藏
- 关注
原创 关于osg μservice和微服务
有些概念---它们不是一些规范标准,所以也没有明确的、具体的实现。因为对概念的理解角度未必一致,我们不能很明确评判一些具体的实现是否在这些概念的范畴之内。关于服务化架构,就有很多这类的概念,例如:SOA、微服务。到底什么是SOA?什么是微服务?业界只有一些条目说明,而没有清晰的、硬性的标准和规范。更没有参考实现之类的东西。于是,不断有不同的实现或架构出来,宣称是SOA,是微...
2016-09-24 07:21:19 258
原创 使用Apache ServiceMix轻松发布Web Service
Apache ServiceMix集成了Camel、Camel-CXF,可以轻松地发布Web Service。与传统的通过Servlet发布web Service的方式不同,我们可以通过Camel路由分别处理不同的web service调用。以下是一个简单的例子:我们首先看看以下服务接口定义:[code="java"]package com.ponder.ws;pu...
2015-04-14 15:22:45 379
原创 Apache ServiceMix入门之五
我们也可以在Servicemix中,利用Camel支持通过Java Bean来处理我们的业务逻辑。首先,我们需要理解org.apache.camel.Processor这个接口,它只有一个方法process,参数是Exchange。Exchange是什么呢?我们可以将Exchange理解为一个“消息”的封装,它包含了in和out两部分,这两部分又可以分别包含一个(或零个)body和...
2014-12-20 12:59:25 292
Apache ServiceMix入门之四
上节,我们尝试了camel-ftp component和file component组成的2个路由,可以看到两个路由间接地通过“file:c:/inbox"这个endpoint,达到下载文件,然后再将文件移到另一文件夹的效果。下面,我们再来看几个其它Component的例子:首先,我们先准备一下环境,先在console下运行:[code="java"]karaf@root>log:...
2013-03-16 00:50:21 218
OSGI Blueprint入门之十
在传统的Ioc容器里,對象的生命周期一般为静态的,在初始化时创建后,就不会在运行期间撤下或替换。在Blueprint容器中,可以引入OSGI服务引用,而OSGI服务是动态存在的,也就是说随时有可能由不可用变为可用或由可用变为不可用。我们可以将一个bean发布出一个osgi服务,然后将这个服务的引用(reference)再注入另一个bean中,这个bean又可以再基于这个服务引用来...
2013-03-15 09:28:46 209
Apache ServiceMix入门之三
上节介绍了一个简单的Camel的小例子,在例子中,介绍了Camel的Componet、Endpoint、URI的概念,总结起来就是:1、Component就是Endpoint的实例工厂;2、在编排的camel路由中,Componet是用URI来表示的;3、每个camel路由都有一个信息的来源Endpoint,并通过路由流过/流向目的Endpoint。上节举了一个fi...
2013-03-14 00:41:26 298
Apache ServiceMix入门之一
ServiceMix是Apache的一个顶级开源项目,是一个ESB实现。在个人看来,它最大的特色就是从核心到应用全面支持OSGI。ServiceMix是以Karaf为内核,而Karaf也是从早期ServiceMix的内核部分独立出来而成的一个Apache顶级项目。Karaf是整合OSGI framework及一些周边基础功能实现而成的OSGI运行时环境,所以,可以说ServiceMix...
2013-03-08 23:15:06 504
Apache Servicemix入门之二
ServiceMix正常运行后,我们尝试编写一个Blueprint XML文档:[code="java"] [/code]将以上内容保存成example1.xml,并将此文件拷贝到/deploy/文件夹下。到ServiceMix的console里输入命令list,可以看到:[img]...
2013-03-07 23:25:20 225
约束是工具,还是枷锁?
刚接触OSGI时,感觉开发受到很大的约束,你不能随便就引用其它Bundle的类,你也很难控制你的Bundle的启动的先后次序,于是,千方百计地在Manifest.mf里动脑筋,又是Import-Package,又是Bundle-Classpath的,搞搞DynamicImport-Package,又或者试图通过Import-Package引用被依赖的Bundle,来达到被依赖的Bundle能够比依...
2013-03-05 22:46:29 176
OSGI Blueprint入门之九
前几日,有网友提了一个问题:用blueprint注册了 一个servlet服务,并将另一个osgi服务注入这个 servlet服务bean里,以便在处理用户的http请求 时调用。但是部署运行后,发现servlet那里注入 的osgi服务一直为null。表面上,以上的应用似乎设计简单合理。为什么 会出现这样的问题呢? 原因很简单:此servlet非彼 servlet。当bluepr...
2013-03-02 13:18:50 198
船(九)
1998年春,西沙,中建岛,澳门对出海面,新中国船厂船坞 3、4月份,在海上是挺舒服的时间,没有大风大浪,晕船也感觉没那么幸苦了,也许慢慢开始适应了这种生活。 每次穿过虎门大桥,就意味着接下来的一个多月的海上飘泊的日子开始了。到现在为止,如果有人在珠江或珠江口坐船就说晕,我就觉的好笑,因为“得瑟”... ...。 船开了3、4天才到我们的目标海域:西沙,天气很好,每日都阳光...
2013-02-28 20:32:36 165
船(八)
1997年秋,亚龙湾、万山、桂山、南澳岛 又再次出海,这次好点,比较适应了,虽然还偶尔吐了一、两回,也可能这次都在近海。 先跑去了海南岛三亚附近,那时我还没到过海南,三亚也不如现在这么出名,但也知道那里很美,干了几天活,船就靠近亚龙湾了,船进去后,不被允许下锚,只能在那里漂着。估计晚上“老鬼”没觉睡了,否则船漂到哪都不知道。 不允许下锚的原因很环保,因为水底就是大片的珊瑚保...
2013-02-28 12:43:10 138
船(七)
1997年秋,大伶仃岛、广州湾、湛江港 中秋的第二天,船开往大伶仃岛补给,我跟着几个同事随补给的小艇一起登上大伶仃岛,没错,这个“伶仃”二字,就是文天祥那句“伶仃洋里叹伶仃”的“伶仃”,岛的面积挺大的,一艘游轮停在离岛不远处,有一些游人在岛上逛着。 那些有多年出海经验的同事跟我们讲着周边海域的海岛上的“色”事,看来,这些海员在船上真“憋屈”沿着山路,爬到半山腰,不知谁在那里...
2013-02-27 17:17:19 144
原创 船(六)
1997年中秋,大伶仃岛附近海域。 毕业后第一份工作的第一次出海作业:从文冲船厂码头上船,沿着珠江,从虎门大桥下穿过,出到珠江口,水面上那泾渭分明的淡咸分界线,预示着进入了海域了,渐渐的已经看不到陆地了... ...。 来到大伶仃岛时,已经接近中秋了,每日船以恒定的4节的速度来来回回地在一块方形海域画着“弓”字。 这些对老船员来说,是沉闷,而对于我来说,则是折磨,那低频的海...
2013-02-27 13:24:00 120
原创 船(五)
1986年夏,大屿山周边海域。 父亲那天晚上8点多都还没回来,家里等着他吃饭。 母亲让我们小孩先吃,自己跑去工地找他,快十点才一个人回来。 父亲的一个同事神神秘秘地跟我母亲说,我父亲要过2天才回来,说是跟港监的船出海了,至于出海干什么,就没有说。一家人都有一点担心。 两天后,依然没见父亲踪影,全家人更加担心了。 终于在第三天,父亲才回到家了,身上背着一个大麻...
2013-02-27 12:51:05 117
原创 船(四)
1994年夏,广州大沙头码头 我从江西“站”了二十几个小时的火车,再从火车站打的去到大沙头码头,买了一张广州到虎门的快船船票。 船开得很快,座位几乎在水面以下,只能抬头从舷窗看出去,附近如果有大船靠近,船就会有些颠簸。不过很快,只需要1个小时就到虎门了,相对于赶着回家的心情,呆在船舱里1小时算得了什么,一上岸就什么都不记得了。...
2013-02-27 09:28:13 150
红屋的卡拉OK
1988年或1989年,我父亲接了一个小私活(当时称之为“炒更”或“秘捞”),工作内容是给一家小酒吧焊霓虹灯招牌,我还记得那家酒吧叫“红屋”。 不久后,我父亲又从那个酒吧接了一个新活,也是焊招牌,这次焊上的招牌上有个“新词”:卡拉OK。 而那家小酒吧也是当时镇上第一家卡拉OK厅。 我就是从那时才第一次接触到这个词,但当时没能尝试这种玩意。 到现在为止,我一直不清楚那...
2013-02-27 00:06:09 141
船(三)
1988年夏,虎门到广州番禺市桥的航道。 那日,不知为什么我父亲会突发奇想,带着我和妹妹,从虎门威远港口登船,往番禺市桥去,早上8点上的船。 船悠闲地在水道上慢慢的挪动着,一路上,看着来来往往的货船、渡船,两边的岸上,要么就是香蕉地,要么就是甘蔗地,那时的天气真好,我依然还记得那黄黄的江水对着的那蓝色的天。 船用了近3个小时才到了市桥,那是我第一次到市桥,我当时的印象,市桥...
2013-02-26 23:25:12 151
船(二)
1985年春,珠江口,虎门镇沙角对出海面。 家门口对出2、3百米处的海面,为了2公里外的发电厂,建起了近2公里长的海堤,围起了一片应该有约一平方公里的海面。从此,这片水面,没有了浑浊的河沙,沉淀成一片静静的湖面。 靠岸的这侧,有一公里长的海岸线,成了湖岸了,零星散布着小块小块的沙滩,离岸不远的山体,被冲涮成十几二十米高小型悬崖。 海被围了,鱼也留在了那里,慢慢地,鱼越来越多...
2013-02-26 23:23:35 167
船(一)
1966年冬,粤东韩江河上。 父亲18岁,开始跟着祖父为生计奔波,工作是“行船”,在韩江河上来回运货。 枯水季节的冬夜,载货的船吃水深,不时地搁浅,船上小碳炉上温着一大锅酒,年轻人喝了酒,把衣服全脱了,只留一条裤衩,跳到河水里,拉着船脱离浅滩... ...。...
2013-02-26 23:21:57 168
自由与约束
人皆向往自由,但是凡事都应两看,有时约束并非坏事。特别是在软件开发来说,似乎约束远远比自由更重要。在java语言来说,它所带的约束远比C语言多得多:没法使用指针,无法直接对硬件设备作操作,一切都被约束在JVM上。但是,正是这些约束,使java脱离了指针越界的噩梦,脱离了硬件细节的泥沼,使它往更高层面发展,目前大量与各类商业业务逻辑相关的应用中,Java实现占的比例远远高于C的实现。也许有人...
2013-02-26 23:03:35 192
初识领域驱动设计
以前做系统设计,很自然会往OOAD方面去靠,但总是感觉有些异样:设计的东西到了开发时总是有那么一点半点的东西需要勉强妥协成不那么OO的。 最近几天,看了一些关于领域驱动设计(DDD)的资料,才知道,原来我所遇上的问题,就是DDD能够帮我解决的问题。 OOAD是太自由了,设计者可以十分自由地设计出各种各样的类和它们的各种继承、聚合等关系,设计得好不好,完全在于设计...
2013-02-26 05:37:51 106
osgi bundle的编译时与运行时的依赖
bundle之间存在耦合,就必然存在依赖关系,由于osgi特殊的classloader组织结构,osgi的bundle之间及bundle内部的依赖关系稍微比传统java应用稍微复杂点。 首先,在传统java应用中,在运行时,大部分jar包都是由同一个classloader来加载,所以它们在编译时和运行时时的依赖关系基本上是一致的,也就是说你编译通过了,在运行时,如果...
2013-02-24 21:02:09 438
OSGI设计模式之whiteboard pattern
OSGI的模块化带来的一个好处就是动态化。动态化就是要求软件构件之间的耦合是松散的,不会因为被依赖的构件的撤走而导致依赖它的构件的崩溃。所以,我们说在OSGI里提供了export-package/import-package的机制,但如非必要,它不能过分使用,因为如果export package的bundle被卸掉后,import package的那个bundle也会从active或resovle...
2013-02-23 16:57:01 218
linux设备驱动整理(2)
"欲利其事,先利其器",整理一下编译linux设备驱动程序的makefile。[code="java"]all: KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) $(MAKE) -C $(KERNELDIR) M=$(PWD) modulesclean: $(MAKE) -C...
2013-02-23 07:06:44 97
规范、模式与框架
我们经常会接触到规范(specification)、 、模式(pattern)、框架(framework)等概念。有时与朋友沟通时,总感觉对方混淆了这些概念的使用范畴,也就是将某个概念的东西硬往另一个概念上套。在此,我讲讲自己的看法,期待各位的拍砖:规范(specification)几乎和标准同义,是一类实现的实现标准。也就说为了统一某类实现的某些特性,而制定规范,使这类的实现互相...
2013-02-22 08:53:30 244
研究一下基于OSGI的web应用(4)
上节提到将war包改造成wab,通过pax web extender部署 在OSGI framework上的方式来发布 web应用。表面上,我们似乎只需要作少量的改 动,就能将旧的web应用OSGI化了,但是我们没 得到任何好处,只是为OSGI化而OSGI化了,既 没得到OSGI的模块化、动态化的好处,还得受 OSGI classloader机制的限制。既然如此,我们 何必自讨苦吃地将它改造...
2013-02-21 09:13:59 107
研究一下基于OSGI的web应用(3)
有了servlet和filter,web应用的UI部分就己经有了基础,但光凭这个来搭建一个复杂的web应用的UI就象用二极管、三极管、电阻、电容去搭建一台电脑一样,有些不切实际,我们还是渴望着能用上以往的那些mvc框架(例如struts,springmvc等)来降低复杂度。如果能象j2ee那样将一个war作为一个web应用来部署该多好呀! 我们想到的,也已经有人做到了。这...
2013-02-20 11:24:07 115
OSGI Blueprint入门之八
Blueprint除了组装bean,osgi服务引用等的DI(IOC)功能之外,还可通过各种命名空间(namespace)来扩展。在《[url=http://killko.iteye.com/blog/1787606]Blueprint入门之六[/url]》中,我们就用过一个与ConfigAdmin相关的命名空间(http://aries.apache.org/blueprint/xm...
2013-02-19 08:13:30 185
研究一下基于OSGI的web应用(2)
除了支持动态页面的Servlet外,web还需要一些静态的资源来支持,例如:图片、待下载的文件、css、javascript脚本等等。 为了支持这些静态资源,HttpService服务除了提供注册Servlet的方法(registerServlet)外,还提供了一个注册资源的方法(registerResources) :[code="java"]HttpServi...
2013-02-19 08:02:37 116
研究一下基于osgi的web应用(1)
目前,J2EE的web应用可以说多不胜数,很多 做过J2EE,并开始接触OSGI的童鞋都会自然而然 地想,如果在OSGI之上该如何构建Web应用。在 这方面,OSGI虽然有一些解决方案,但“似乎”都 不是那么成熟的。这还真不好说,我隐隐约约感 觉似乎在观念上需要改变,就像我们要理解广义 相对论,需要去将万有引力的观念转变成时空扭 曲的观念来理解一样。不管如何,大概我们先理 理现在的观念还是比...
2013-02-18 09:20:01 130
linux设备驱动整理(1)
linux设备驱动属于内核的一部分。除了可直接编 译进kernel外,还可以作为模块的形式动态加 载。在kernel2.6后,模块以.ko的文件形式存在。 通过lsmod命令,我们可以查询已加载的设备驱动模块。 由于很多服务都依赖于设备驱动模块, 所以设备驱动一般会安排在系统启动的早期来加 载,例如:/etc/rc.d/init.rc脚本里加载。有些设备 驱动之间存在依赖关...
2013-02-18 08:22:09 106
乱凑的一个osgi的demo
有网友问我有没有osgi的demo,于是将前段时间给朋友的一个例子拿来整理了一下。 首先,这个demo是在karaf下运行的,项目由三个bundle组成,会涉及自定义的console命令,服务的发布和引用。 项目为maven项目,为方便构建,将三个bundle项目作为一个父项目下的三个子项目。项目经mvn package构建后,在三个子项目的target文...
2013-02-07 17:43:15 90
OSGI Blueprint入门之三
在上一篇的例子中,我们在bean节点里用property注入了一个OSGI service引用。那么这个OSGI service是从哪里来的呢?下面我们介绍一下Blueprint如何注册一个OSGI service。 首先我们在java代码中定义一个interface,然后用一个类去实现它,就和面向接口开发一样。最后,我们就通过Blueprint的service节点发布这个O...
2013-02-05 18:25:07 128
OSGI Blueprint入门之七
Blueprint既然是DI规范,自然在注入方面有很多的需求。在前几篇中,我们已接触了服务引用的注入:[code="java"] [/code] 上例中,reference节点定义了对一个OSGI服务的引用,然后在bean节点内用property子节点将该服务引用注入bean中,注入是blueprint通过bean的setCoder(com.pond...
2013-02-05 09:02:43 186
我的OSGI学习历程
系统开发到了一定程度的时候,我发现以往有很多可以再优化的地方,于是试图去优化,最终虽然优化了,但是因为牵连的东西有点多,所以花了不少时间。经过一番思考,才意识到需要优化的不是那些代码,而是那些架构。我们需要的大系统应该由多个相对独立的小系统组成,将业务分而治之。于是就去找合适的方法来达到这个目的,很幸运的是,我发现了OSGI。 刚开始, 就只是知道 OSGI是一...
2013-02-04 16:26:11 154
OSGI Blueprint入门之六
Blueprint用另一个命名空间(http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0)支持osgi configadmin来配置节点的相关参数。[code="java"] [/code] 上例中”URL”和”...
2013-02-04 09:34:40 220
Servicemix,Karaf和Camel
Servicemix是一个基于JBI规范的ESB,从Servicemix4开始全面支持OSGI,所谓全面支持是指不仅Servicemix4本身是基于OSGI framework和OSGI Bundle来实现,而且在Servicemix4上跑的应用也是由OSGI Bundle来构成的。而目前有很多J2EE应用服务器本身是基于OSGI来实现,但在这些应用服务器上跑的应用则是传统架构的。 ...
2013-02-02 15:00:18 109
OSGI Blueprint入门之五
reference-list除了可以用setter的方式注入OSGI service外,还可以用listener的方法来实现OSGI service的注入。[code="java"][/code] 这种方法就是通过bean里定义由reference-listener子节点的属性bind-method和unb...
2013-02-01 12:21:56 349
OSGI Blueprint入门之四
上一篇提及了OSGI service的发布和引用,在 Blueprint里,服务的发布和引用是最常用的一种 最佳实践,通过借助服务引用这样松散的藕合方 法,可以让OSGI的动态性发挥得淋漓尽致。 一些较低层的,细粒度的服务引用可以注入到 bean里,再将这个bean发布出更高层次的,粗粒 度的服务,而Blueprint container将会通过监听 来自OSGI framew...
2013-02-01 09:06:09 159
Maven权威指南(中文)
2010-08-24
架构风格与基于网络的软件架构设计
2010-03-30
C#语言参考手册--供开发人员用
2008-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人