首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

面向 Jython 的 Web 服务框架简介-1 WSF/Jython 体系结构

面向 Jython 的 Web 服务框架简介-1 WSF/Jython 体系结构

面向服务的体系架构是一种架构风格,用于指导创建松散耦合且独立于实现技术的协作式服务。SOA 概念是早期分布式和模块编程概念的扩展和延伸。在 SOA 模型中,功能可以分解成许多不同的单元,即服务。而服务又可以归类为一种自动计算操作,用于为内容提供计算逻辑。SOA 的基本元素就是服务。Web 服务是一种实现方法,它采用一些标准的协议来执行 SOA。Web 服务旨在将瓦解的中间件领域重新紧密连接在一起,使互操作性的重要性提升到首位。在迅速发展的云计算领域中,我们看到基于软件即服务(SaaS)、硬件即服务(Haas)和平台即服务(Paas)的组件化软件生态系统是整个行业的发展趋势。因此,了解 SOA 的基本构成对于掌握云计算的概念至关重要。
要阅读本文,您应该掌握 Apache Axis2 的基本知识,以便更好地理解解决方案的体系结构。虽然具备 Axis2 知识是一项优势,但您也可以使用 WSF/Jython 来公开和使用 Jython Web 服务。           
WSF/Jython 体系结构Apache Axis2 是一种 SOAP 处理引擎。它接收传入的 SOAP 消息并检索其中的信息。此信息将提供给 Web 服务业务逻辑。然后,根据从业务逻辑获取的结果生成一条 SOAP 消息并将其返回给客户端。但是,如果业务逻辑包含在 Jython 中,则会产生一个问题。            
针对需要在 Axis2 中公开 Jython Web 服务这一问题的解决方案蕴含在 Axis2 的可拔插式部署程序的概念中。部署程序支持通过 Axis2 的动态特性来部署服务。要公开使用 Jython 编写的公开,需要编写一个自定义部署程序和一个 Jython 消息接收程序。与 XML 模式中的静态数据类型不同,Python 数据类型是动态的。因此,在部署程序中,需要在 Python 数据类型与 XML 模式数据类型之间建立映射关系。此过程被称作数据绑定。然后,借助数据绑定和方法注释,为 Jython 服务生成一个 XML 模式。此 XML 模式连同与 Axis 服务相关的元数据将被传递给 Axis2 引擎。Axis2 引擎将创建 Web Service Description Language (WSDL),因此 Jython 将作为 Web 服务公开给外界。
此解决方案方法需要在 Jython 脚本和 Java™ 类之间进行通信。作为 Python 编程语言的 Java 实现,Jython 可以用实现此目的。它是一种编程混合体。它同时具备 Java 和 Python 的优势。由于 Jython 是完全使用 Java 编写的,因此使用 Jython 编写的脚本可以在任何兼容的 Java Virtual Machine (JVM) 上运行。Jython 解释器还支持许多快捷方式,这为它能够使用已有 Java 库提供了保障。           
这种体系结构认为 SOAP 处理器应该两种基本操作:发送和接收 SOAP 消息。它提供了两个管道(或流)来执行这两种基本操作:这些管道用于发送和接收数据。Axis 引擎实现了这两个管道,分别是 In PipeOut Pipe。Complex Message Exchange Patterns (MEPs) 就是通过结合这两个管道而建立的。
图 1. WSF/Jython 体系结构SOAP 处理模型的可扩展性将通过处理程序体现出来。在处理 SOAP 消息时,所注册的处理程序将被执行。这些处理程序可以注册为全局、服务或操作作用域,并且最终的处理程序链将通过结合所有作用域的处理程序得出。
处理程序的作用是充当拦截器。它们将处理 SAOP 消息的各部分,并提供增值服务。处理程序通常操作 SOAP 的头部,但它们也可以访问或更改 SOAP 的主体部分。            
通过 Client API 发送 SOAP 消息时会激活 Out Pipe。Out Pipe 将调用处理程序,并通过 Transport Sender 将 SOAP 消息发送给目标端点。目标端点的 Transport Receiver 接收到 SOAP 消息之后将读取 SOAP 消息并启动 In Pipe。In Pipe 由一系列处理程序组成,而位于末端的是 Jython Message Receiver,它使用 SOAP 消息并将其传递给应用程序。
总的来说,传入的 SOAP 消息在被 Transport Listener 接收之后将在处理程序链上传递。然后,它被传递给 Jython Message Receiver,后者将遍历 AXIs Object Model (AXIOM) 结构并检索所需的信息。AXIOM 是为  Apache Axis2 开发的信息集模型。检索到的信息将被传递给 Jython 服务,该服务根据所返回的对象创建一个 AXIOM。然后,AXIOM 按原路经由处理程序链传回 Transport Sender。Transport Sender 又将 SOAP 消息发送给目标 SOAP 端点。上述过程适用于所有经过交换的 SOAP 消息。
返回列表