深入剖析深入剖析SCA异步调用模式异步调用模式
服务组件体系结构(Service Component Architecture,SCA)是下一代编程模型,此编程模型提供了三种异步调用模式。您
可以使用那些模式异步地调用目标SCA服务,而不需要知道请求和响应消息是如何“魔法般地”进行处理的。本文阐述在发出异
步请求时所发生的情况,以及SCA运行时如何处理消息系统中的异步消息。了解如何开发中介处理程序来监视SCA异步消
息,以及如何使用中介处理程序来分析异步调用。
引言
IBM WebSphere Integration Developer和IBM WebSphere Process Server是用于组装和执行SCA应用程序的功能强大的平
台。SCA的一个重要特性在于,它与传输协议无关,这意味着业务应用程序开发人员可以集中精力处理业务逻辑。作为开发
人员,您唯一需要知道的事情在于,您能够以同步或异步的方式向服务发送请求,而不需要知道请求消息是如何进行处理的。
服务也决不需要知道请求来自于何处。请求可能来自于Java Message Service(JMS)队列、HTTP请求,或者甚至来自于套接
字请求。所有这些传输信息对服务提供者和请求者是完全透明的。
但是系统架构师、服务维护团队和技术专家需要知道幕后发生的事情。本文将阐述那些过程。
图1所示的拓扑可以帮助您发现SCA运行时异步行为。该拓扑包括两个模块:Caller和Callee。Caller模块包含两个实现类型为
Java的SCA组件。第一个Java组件(Caller)异步地调用同一个模块或另一个模块中的Callee组件。最终用户确定该调用是否以
跨模块的方式发生,以及所使用的是哪一种调用类型。
图1. 示例拓扑
在WebSphere Integration Developer中构建Caller和Callee模块以后,WebSphere Integration Developer将为每个模块生成相
关的Java 2 Platform, Enterprise Edition(J2EE)构件。这些构件是了解SCA运行时行为的关键。例如,对于Caller模块,您将
获取如图2所示的构件。
图2. WebSphere Integration Developer中的Caller模块的构件
在将应用程序部署到WebSphere Process Server以后,您可以在SCA系统总线中看到以下目的地已自动地生成(请参见图
3)。
图3. SCA系统总线中的目的地
WebSphere Integration Developer生成的构件和应用程序部署期间生成的目的地一起来完成同步和异步调用。
WebSphere Integration Developer为每个模块生成一个Enterprise JavaBeans(EJB)项目。在所生成的EJB项目
中,WebSphere Integration Developer为该模块生成一个会话Bean,用于为服务请求者提供同步调用接口。所生成的另一个
重要构件是消息驱动Bean(message-driven bean,MDB),用于处理所有的异步请求。MDB从JMS消息正文获取请求消
息,并从消息标头中获取目标服务名称。然后它将请求分派给某个SCA运行时。SCA运行时处理消息并调用目标服务。如果