`
killko
  • 浏览: 102284 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
Group-logo
Servicemix&Fu...
浏览量:0
社区版块
存档分类
最新评论
文章列表
Apache ServiceMix集成了Camel、Camel-CXF,可以轻松地发布Web Service。 与传统的通过Servlet发布web Service的方式不同,我们可以通过Camel路由分别处理不同的web service调用。以下是一个简单的例子: 我们首先看看以下服务接口定义: package com.ponder.ws; public interface IService{ public long add(long p1,long p2); public long sub(long p1,long p2); } 接着看看blueprint ...
我们也可以在Servicemix中,利用Camel支持通过Java Bean来处理我们的业务逻辑。 首先,我们需要理解org.apache.camel.Processor这个接口,它只有一个方法process,参数是Exchange。 Exchange是什么呢?我们可以将Exchange理解为一个“消息”的封装,它包含了in和out两部分,这两部分又可以分别包含一个(或零个)body和多个(或零个)header。 我们可以把org.apache.camel.Processor看成是一个处理过程,它处理的就是Exchange,一般来说处理的就是Exchange中in的部分包含的信息,然后再将 ...
上节,我们尝试了camel-ftp component和file component组成的2个路由,可以看到两个路由间接地通过“file:c:/inbox"这个endpoint,达到下载文件,然后再将文件移到另一文件夹的效果。下面,我们再来看几个其它Component的例子: 首先,我们先准备一下环境,先在console下运行: karaf@root>log:clear 这个命令是将缓存中的日志清空。还有两个相关的命令: log:display     显示最近的一些日志 log:tail            持续显示日志输出(对照一下linux/unix中的ta ...
 在传统的Ioc容器里,對象的生命周期一般为静态的,在初始化时创建后,就不会在运行期间撤下或替换。 在Blueprint容器中,可以引入OSGI服务引用,而OSGI服务是动态存在的,也就是说随时有可能由不可用变为可用或由可用变为不可用。 我们可以将一个bean发布出一个osgi服务,然后将这个服务的引用(reference)再注入另一个bean中,这个bean又可以再基于这个服务引用来实现并发布更高层次的服务……这样就可以一级级地装配出粗粒度的服务出来。 当在下层的服务被撤走时,上层强制依赖于它的服务也会被撤下,而下层服务再次恢复时,上层的服务又会快速地恢复,blueprint就是这样动态 ...
上节介绍了一个简单的Camel的小例子,在例子中,介绍了Camel的Componet、Endpoint、URI的概念,总结起来就是: 1、Component就是Endpoint的实例工厂; 2、在编排的camel路由中,Componet是用URI来表示的; 3、每个camel路由都有一个信息的来源Endpoint,并通过路由流过/流向目的Endpoint。 上节举了一个file component的例子,下面再举几个其它Component的例子,以开视听: <?xml version="1.0" encoding="UTF-8"?> ...
ServiceMix是Apache的一个顶级开源项目,是一个ESB实现。在个人看来,它最大的特色就是从核心到应用全面支持OSGI。 ServiceMix是以Karaf为内核,而Karaf也是从早期ServiceMix的内核部分独立出来而成的一个Apache顶级项目。Karaf是整合OSGI framework及一些周边基础功能实现而成的OSGI运行时环境,所以,可以说ServiceMix就是在OSGI环境下运行的ESB系统。 除此之外,ServiceMix集成了ActiveMQ、Camel、Aries Blueprint等相关项目,而且可以通过Karaf的features不断扩展它所具备 ...
ServiceMix正常运行后,我们尝试编写一个Blueprint XML文档: <?xml version="1.0" encoding="UTF-8"?> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sch ...
刚接触OSGI时,感觉开发受到很大的约束,你不能随便就引用其它Bundle的类,你也很难控制你的Bundle的启动的先后次序,于是,千方百计地在Manifest.mf里动脑筋,又是Import-Package,又是Bundle-Classpath的,搞搞DynamicImport-Package,又或者试图通过Import-Package引用被依赖的Bundle,来达到被依赖的Bundle能够比依赖它的Bundle先启动... ...。 当很多手段都用尽,应用得以顺利运行后,却发现做这么多工作,和以往非OSGI环境下的应用并没有得到什么模块化、动态化的好处,应用还是不能顺利地热插拔!这样做,何 ...
前几日,有网友提了一个问题:用blueprint注册了 一个servlet服务,并将另一个osgi服务注入这个 servlet服务bean里,以便在处理用户的http请求 时调用。但是部署运行后,发现servlet那里注入 的osgi服务一直为null。 表面上,以上的应用似乎设计简单合理。为什么 会出现这样的问题呢? 原因很简单:此servlet非彼 servlet。 当blueprint容器建立起模型时,上例提到的 servlet bean已实例化并注入了所需的osgi服务。 但是,当用户发起http请求时,一个新的servlet 实例在HttpService那里被创建,这个servle ...
1998年春,西沙,中建岛,澳门对出海面,新中国船厂船坞 3、4月份,在海上是挺舒服的时间,没有大风大浪,晕船也感觉没那么幸苦了,也许慢慢开始适应了这种生活。 每次穿过虎门大桥,就意味着接下来的一个多月的海上 ...
1997年秋,亚龙湾、万山、桂山、南澳岛 又再次出海,这次好点,比较适应了,虽然还偶尔吐了一、两回,也可能这次都在近海。 先跑去了海南岛三亚附近,那时我还没到过海南,三亚也不如现在这么出名,但也知道那里很美 ...
人皆向往自由,但是凡事都应两看,有时约束并非坏事。特别是在软件开发来说,似乎约束远远比自由更重要。 在java语言来说,它所带的约束远比C语言多得多:没法使用指针,无法直接对硬件设备作操作,一切都被约束在JVM上 ...
    以前做系统设计,很自然会往OOAD方面去靠,但总是感觉有些异样:设计的东西到了开发时总是有那么一点半点的东西需要勉强妥协成不那么OO的。     最近几天,看了一些关于领域驱动设计(DDD)的资料,才知道,原来我所遇上的问题,就是DDD能够帮我解决的问题。     OOAD是太自由了,设计者可以十分自由地设计出各种各样的类和它们的各种继承、聚合等关系,设计得好不好,完全在于设计者的经验和灵感,甚至是运气。OOAD只是在对象这个层面上提供一定的设计约束。如果没有一些在全局上的、清晰的约束,OOAD可能就象用一堆对象拼凑成一个系统,毫无章法可言。     今日终于有点开窍了,领域驱动设 ...
    bundle之间存在耦合,就必然存在依赖关系,由于osgi特殊的classloader组织结构,osgi的bundle之间及bundle内部的依赖关系稍微比传统java应用稍微复杂点。         首先,在传统java应用中,在运行时,大部分jar包都是由同一个cl ...
OSGI的模块化带来的一个好处就是动态化。动态化就是要求软件构件之间的耦合是松散的,不会因为被依赖的构件的撤走而导致依赖它的构件的崩溃。所以,我们说在OSGI里提供了export-package/import-package的机制,但如非必要,它不能过分使用,因为如果export package的bundle被卸掉后,import package的那个bundle也会从active或resovled的状态转为installed的状态。而采用osgi service的方式则是被推荐的bundle间耦合方式(被引用的服务不存在时,bundle不会从active或resovled的状态转为instal ...
Global site tag (gtag.js) - Google Analytics