一种Camel与SCA的交互方法及中间件的制作方法

文档序号:7759536阅读:156来源:国知局
专利名称:一种Camel与SCA的交互方法及中间件的制作方法
技术领域
本发明属于计算机技术领域,尤其涉及一种Camel与SCA的交互方法及中间件。
背景技术
Apache Camel采用URI来描述各种组件,通过Camel可以很方便地与各种传输或者消息模块进行交互,其中包含的模块有HTTP、ActiveMQ、Java消息服务JMS、JBI、MINA、服务组件架构SCA、CXF API。这些模块是采用可插拔的方式进行工作的。Camel的核心十分小巧,可以很容易地将其集成在各种JAVA应用中。现有实现Camel跟SCA交互方式主要有两种,一种是典型的服务通信方式,SCA对外暴露TOB服务,Camel通过http endpoint (HTTP 端点)发送请求消息进行路由并处理返回结果。该方式可以实现两者之间的交互,但是交互方式为跨系统的网络通讯方式,通讯花费的代价比较大,对于JAVA容器内部的交互并不合适。另一种采用Camel中bean endpoint (JAVA豆对象端点)跟SCA直接交互的方式,在配置文件中注入SCA实现类,并配置路由到该bean的调用方法,在Camel完成路由和路由后,调用bean endpoint方式实现交互。该方式粗略实现了 Camel跟SCA的JAVA容器内部的交互,但是面目存在一定的局限性,例如,注入SCA的实现类,SCA的实现不一定由JAVA提供,有可能是开放服务网关倡议OSGi来提供实现,而且对外直接暴露实现类不恰当,也增强了系统的耦合性。

发明内容
本发明实施例的目的在于提供一种Camel与SCA的交互方法,旨在解决现有Camel 与SCA交互方式中,典型的服务通信通讯代价较大、不方便JAVA容器内部交互,以及Camel 中bean endpoint跟SCA直接交互方式耦合性高的问题。本发明实施例的目的在于提供一种Camel与SCA的交互方法,所述Camel与SCA 位于相同的JAVA容器内,所述方法包括下述步骤通过WEB服务接口接收TOB服务请求;对所述WEB服务请求进行路由;根据路由后的TOB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口 ;调用所述SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。本发明实施例的另一目的在于提供一种路由和媒介引擎,所述路由和媒介引擎包括TOB服务接收单元,用于通过TOB服务接口接收TOB服务请求;服务请求路由单元,对所述WEB服务接收单元接收的WEB服务请求进行路由;SCA组件服务调用单元,用于根据所述服务请求路由单元路由后的WEB服务请求, 调用预置对象库中预先注册的SCA组件提供的服务接口 ;以及SCA组件服务结果获取单元,用于调用SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。本发明实施例的另一目的在于提供一种中间件,其特征在于,所述中间件包括路由和媒介引擎,所述路由和媒介引擎包括Wra服务接收单元,用于通过TOB服务接口接收TOB服务请求;服务请求路由单元,对所述TOB服务接收单元接收的WEB服务请求进行路由;SCA组件服务调用单元,用于根据所述服务请求路由单元路由后的WEB服务请求, 调用预置对象库中预先注册的SCA组件提供的服务接口 ;以及SCA组件服务结果获取单元,用于调用SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。本发明实施例的另一目的在于提供一种Camel与SCA的交互方法,所述Camel与 SCA位于相同的JAVA容器内,所述方法包括下述步骤Camel通过TOB服务接口接收WEB服务请求;
Camel对所述TOB服务请求进行路由;Came 1根据路由后的TOB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口 ;SCA组件对所述TOB服务请求进行响应;Camel调用SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。本发明实施例的另一目的在于提供一种Camel与SCA的交互系统,其特征在于,所述Camel与SCA位于相同的JAVA容器内,其中Camel,用于对接收到的TOB服务请求进行路由,根据路由后的WEB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口,并通过调用所述SCA组件提供的服务请求结果获取接口获取WEB服务请求结果,接收SCA组件返回的TOB服务请求结果。SCA,用于通过提供的服务接口接收传入的路由后的TOB服务请求,并对所述TOB 服务请求进行处理,向Camel发送请求的TOB服务请求结果。本发明实施例通过对接收到的TOB服务请求进行路由,根据路由后的WEB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口,并通过调用所述SCA组件提供的服务请求结果获取接口获取WEB服务请求结果,从而完成Camel与SCA的交互,克服了 Camel与SCA交互方式中,典型的服务通信通讯代价较大、不方便JAVA容器内部交互,以及 Camel中beanendpoint跟SCA直接交互方式耦合性高的问题,更好地实现了 JAVA容器内部 Camel跟SCA的交互,有效了减少了网络通讯费用。


图1是本发明第一实施例提供的Camel与SCA的交互流程图;图2是本发明第二实施例提供的路由和媒介引擎的结构图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例将Camel和SCA置于相同的JAVA容器内,通过调用预置对象库中预先注册的SCA组件提供的服务接口、服务请求结果获取接口获取WEB服务请求结果,从而完成Camel与SCA的交互,更好地实现了 JAVA容器内部Camel跟SCA的交互,有效了减少了网络通讯费用。本发明实施例提供了一种Camel与SCA的交互方法,所述方法包括下述步骤通过WEB服务接口接收TOB服务请求;对所述WEB服务请求进行路由;根据路由后的TOB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口 ;调用所述SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。本发明实施例还提供了一种路由和媒介引擎,所述路由和媒介引擎包括WEB服务接收单元,用于通过WEB服务接口接收WEB服务请求;服务请求路由单元,对所述TOB服务接收单元接收的WEB服务请求进行路由;SCA组件服务调用单元,用于根据所述服务请求路由单元路由后的WEB服务请求, 调用预置对象库中预先注册的SCA组件提供的服务接口 ;以及SCA组件服务结果获取单元,用于调用SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。本发明实施例还提供了一种中间件,所述中间件包括路由和媒介引擎,所述路由和媒介引擎包括WEB服务接收单元,用于通过WEB服务接口接收WEB服务请求;服务请求路由单元,对所述TOB服务接收单元接收的WEB服务请求进行路由;SCA组件服务调用单元,用于根据所述服务请求路由单元路由后的WEB服务请求, 调用预置对象库中预先注册的SCA组件提供的服务接口 ;以及SCA组件服务结果获取单元,用于调用SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。本发明实施例还提供了一种Camel与SCA的交互方法,所述Camel与SCA位于相同的JAVA容器内,所述方法包括下述步骤Camel通过TOB服务接口接收WEB服务请求
Came 1对所述TOB服务请求进行路由;Camel根据路由后的TOB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口 ;SCA组件对所述TOB服务请求进行响应;Camel调用SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。本发明实施例还提供了一种Camel与SCA的交互系统,所述Camel与SCA位于相同的JAVA容器内,其中Camel,用于对接收到的TOB服务请求进行路由,根据路由后的WEB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口,并通过调用所述SCA组件提供的服务请求结果获取接口获取WEB服务请求结果,接收SCA组件返回的TOB服务请求结果。SCA,用于通过提供的服务接口接收传入的路由后的TOB服务请求,并对所述TOB
6服务请求进行处理,向Camel发送请求的TOB服务请求结果。本发明实施例通过对接收到的TOB服务请求进行路由,根据路由后的WEB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口,并通过调用所述SCA组件提供的服务请求结果获取接口获取WEB服务请求结果,从而完成Camel与SCA的交互,克服了 Camel与SCA交互方式中,典型的服务通信通讯代价较大、不方便JAVA容器内部交互,以及 Camel中beanendpoint跟SCA直接交互方式耦合性高的问题,更好地实现了 JAVA容器内部 Camel跟SCA的交互,有效了减少了网络通讯费用。以下结合具体实施例对本发明的具体实现进行详细描述实施例一图1示出了本发明第一实施例提供的Camel与SCA的交互流程,详述如下1. Camel通过TOB服务接口接收WEB服务请求;在本发明实施例中,由Camel向外部提供TOB服务,提供相应的WEB服务接口,接收来自HTTP、ActiveMQ, Java消息服务JMS、JBI、ΜΙΝΑ、服务组件架构SCA等框架或模块的服务请求和通信请求。在该步骤之前,Camel应先建立对SCA组件的引用。2. Camel对TOB服务请求进行路由;在本发明实施例中,Camel对TOB服务请求的路由就是将接收到的服务请求通过一步一步地设置好的逻辑判断(例如过滤器和路由规则)到达与其连接的另一架构系统。 Camel可以通过两种方法来定义路由规则。一个是通过XML来定义路由信息,另一种方式通 Camel StJ Java DSL (domain-specificlanguage)3. Camel根据路由后的TOB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口;在本发明实施例中,在与Camel在相同的JAVA容器中,SCA组件如果需要跟其它组件、系统或架构进行通信,提供相应的服务,需要在Camel预置的对象库进行注册,以方便Camel对外提供相应的WEB服务接口。4. Camel向SCA组件发送转换后的WEB服务请求;在本发明实施例中,Camel通过对SCA组件的引用,调用相应的服务接口,向SCA组件发送路由后的、SCA组件能够识别的WEB服务请求。5. SCA组件对TOB服务请求进行响应;6. Camel调用SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。在本发明实施例中,Camel调用SCA组件提供的服务请求结果获取接口,获取TOB 服务请求结果具体可以通过向SCA组件提供的服务请求结果获取接口传入WEB服务请求结果获取请求,接收SCA向Camel发送的TOB服务请求结果。在本发明实施例中,Camel接收到TOB服务请求结果后,通过类似的一个路由过程,将WEB服务请求结果路由到TOB服务请求者,从而完成WEB服务。在本发明实施例中,Came 1通过预先建立同一 JAVA容器内的SCA组件的引用,并对其进行注册,当接收到WEB服务请求时,对请求进行路由,调用相应的服务接口及服务结果返回接口获取服务结果,完成与SCA组件的交互,从而较好地将Camel封装到SCA构件中, 较好地实现了 JAVA容器内部的通信,同时,只向外提供WEB服务接口,降低了 SCA组件提供的WEB服务实现类的暴露程度。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中, 所述的存储介质,如ROM/RAM、磁盘、光盘等。实施例二 图2示出了本发明第二实施例提供的路由和媒介引擎的结构,为了便于说明,仅示出了与本发明实施例相关的部分。其中SCA组件引用建立单元21,用于建立对SCA组件的引用;TOB服务接收单元22,用于通过TOB服务接口接收TOB服务请求;在本发明实施例中,路由和媒介引擎提供TOB服务接口,接收同一 JAVA容器内组件,或容器外其它架构的服务请求,例如来自JMS、JBI的服务请求和消息。服务请求路由单元23,对TOB服务接收单元22接收的TOB服务请求进行路由;在本发明实施例中,路由和媒介引擎对TOB服务请求的路由就是将接收到的服务请求通过一步一步地设置好的逻辑判断(例如过滤器和路由规则)到达与其连接的另一通信系统。路由和媒介引擎可以通过两种方法来定义路由规则。一个是通过XML来定义路由信息,另一种方式通过路由和媒介引擎的JavaDSL(domain-specific language)来定义。SCA组件服务调用单元对,用于根据路由后的WEB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口 ;在本发明实施例中,在与路由和媒介引擎在相同的JAVA容器中,SCA组件如果需要跟其它组件、系统或架构进行通信,提供相应的服务,需要在路由和媒介引擎预置的对象库进行注册。SCA组件服务结果获取单元25,用于调用所述SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。在本发明实施例中,该路由和媒介引擎可以用于中间件,或者具有通信功能的服务器中,可以是运行于这些服务器端内的软件单元,也可以作为独立的挂件集成到这些服务器端中或者运行于这些服务器端的应用系统中。本发明实施例通过路由和媒介引擎预先建立对同一 JAVA容器内的SCA组件的引用,对其进行注册,当接收到WEB服务请求时,对请求进行路由,调用相应的服务接口及服务结果返回接口获取服务结果,完成与SCA组件的交互,从而较好地将路由和媒介引擎封装到SCA构件中,较好地实现了 JAVA容器内部的通信,同时,只向外提供WEB服务接口,减少了 WEB服务实现类的暴露,同时,减少了与SCA组件的通信量,降低了通信代价。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种Camel与SCA的交互方法,其特征在于,所述Camel与SCA位于相同的JAVA容器内,所述方法包括下述步骤通过WEB服务接口接收WEB服务请求; 对所述TOB服务请求进行路由;根据路由后的WEB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口 ;调用所述SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。
2.如权利要求1所述的方法,其特征在于,所述通过WEB服务接口接收WEB服务请求的步骤之前,所述方法进一步包括下述步骤建立对SCA组件的引用。
3.—种路由和媒介引擎,所述路由和媒介引擎包括WEB服务接收单元,用于通过WEB服务接口接收WEB服务请求; 服务请求路由单元,对所述WEB服务接收单元接收的WEB服务请求进行路由; SCA组件服务调用单元,用于根据所述服务请求路由单元路由后的WEB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口 ;以及SCA组件服务结果获取单元,用于调用SCA组件提供的服务请求结果获取接口,获取 WEB服务请求结果。
4.如权利要求3所述的路由和媒介引擎,其特征在于,所述路由和媒介引擎还包括 SCA组件引用建立单元,用于建立对SCA组件的引用。
5.一种中间件,其特征在于,所述中间件包括路由和媒介引擎,所述路由和媒介引擎包括WEB服务接收单元,用于通过WEB服务接口接收WEB服务请求; 服务请求路由单元,对所述WEB服务接收单元接收的WEB服务请求进行路由; SCA组件服务调用单元,用于根据所述服务请求路由单元路由后的WEB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口 ;以及SCA组件服务结果获取单元,用于调用SCA组件提供的服务请求结果获取接口,获取 WEB服务请求结果。
6.所权利要求5所述的中间件,其特征在于,所述Camel还包括 SCA组件引用建立单元,用于建立对SCA组件的引用。
7.一种Camel与SCA的交互方法,其特征在于,所述Camel与SCA位于相同的JAVA容器内,所述方法包括下述步骤Camel通过TOB服务接口接收WEB服务请求; Camel对所述TOB服务请求进行路由;Camel根据路由后的TOB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口 ;SCA组件对所述TOB服务请求进行响应;Camel调用SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。
8.所权利要求7所述的方法,所述Camel通过TOB服务接口接收WEB服务请求的步骤之前,所述方法进一步包括下述步骤Camel建立对SCA组件的引用。
9.一种Camel与SCA的交互系统,其特征在于,所述Camel与SCA位于相同的JAVA容器内,其中Camel,用于对接收到的TOB服务请求进行路由,根据路由后的WEB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口,并通过调用所述SCA组件提供的服务请求结果获取接口获取WEB服务请求结果。SCA,用于通过提供的服务接口接收传入的路由后的TOB服务请求,并对所述WEB服务请求进行处理,向Camel发送请求的TOB服务请求结果。
10.所权利要求9所述的系统,其特征在于,所述Camel包括 WEB服务接收单元,用于通过WEB服务接口接收WEB服务请求;服务请求路由单元,对所述WEB服务接收单元接收的WEB服务请求进行路由; SCA组件服务调用单元,用于根据所述服务请求路由单元路由后的WEB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口 ;以及SCA组件服务结果获取单元,用于调用SCA组件提供的服务请求结果获取接口,获取 WEB服务请求结果。
全文摘要
本发明适用于计算机技术领域,提供了一种Camel与SCA的交互方法及中间件,所述方法包括下述步骤通过WEB服务接口接收WEB服务请求;对所述WEB服务请求进行路由;根据路由后的WEB服务请求,调用预置对象库中预先注册的SCA组件提供的服务接口;调用所述SCA组件提供的服务请求结果获取接口,获取WEB服务请求结果。本发明通过将Camel和SCA置于相同的JAVA容器内,通过调用预置对象库中预先注册的SCA组件提供的服务接口、服务请求结果获取接口获取WEB服务请求结果,从而完成Camel与SCA的交互,更好地实现了JAVA容器内部Camel跟SCA的交互,有效了减少了网络通讯费用。
文档编号H04L12/56GK102404355SQ20101027841
公开日2012年4月4日 申请日期2010年9月10日 优先权日2010年9月10日
发明者胡锦敏 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1