小曹学SOA1——web服务平台体系架构(WSPA)

来源:互联网 发布:豆浆机上的单片机 编辑:程序博客网 时间:2024/05/29 10:42
1、部署Web服务的平台
(1)能够部署Web服务的平台有Java EE的JWS,Axis,Systinet Server,XFire;
(2)无论是什么平台,都必须提供3个核心子系统:调用子系统(Invocation)、序列化子系统(Serialization)、以及部署子系统(Deployment)。
(3)通常Web Service的服务端与客户端使用的方法签名是不一样的,使用的编程语言也是不同的,因为如果两端使用的都是同样的Java类库,那么通过Java RMI就能够完成这样的调用。 

2、调用子系统的含义(Invocation)
(1)服务器端调用
  • 接受来自网络传输层(例如http、jms端点)的SOAP消息;
  • 调用处理器(handler)来对消息进行预处理(例如对消息进行持久化,或者处理SOAP消息标头);
  • 决定消息的目标服务,换句话说就是消息应该调用哪个WSDL操作;
  • 在确定了目标WSDL操作后,决定调用哪个Java类/方法。确定的Java类/方法称为Java目标,决定Java目标的过程称为分发(dispatching);
  • 把SOAP消息传递给序列化(Serialization)子系统,将它反序列化为Java对象,这些Java对象将作为参数传递给Java目标;
  • 使用序列化子系统生成的参数来调用Java目标,而后得到目标方法返回的Java对象;
  • 把返回的Java对象再传递给序列化子系统,将它序列化为与目标WSDL操作指定的返回消息一致的XML元素;
  • 把返回的XML元素包装成与目标WSDL操作相一致的SOAP响应消息;
  • 把SOAP响应消息传回给网络传输层以发送消息。

(2)客户端调用
  • 创建一个web服务端点的实例,该服务端点实现一个Java接口,用JWS的术语来说,这种接口叫做服务端点接口(Service End Point,SEI)。调用子系统有一个或多个工厂方法可以用于创建SEI实例,我们可以方便的创建这些实例,也可以用JNDI来访问它们。通常情况下,SEI实例是用Java代理和调用处理器(Invocation Handler)来实现的;
  • 处理SEI实例的调用;
  • 获得传递给SEI的参数,把它们传递给序列化子系统,然后序列化为与目标服务的WSDL指定的XML模式一致的XML元素;
  • 基于目标服务的WSDL,把参数元素封装到SOAP消息中;
  • 调用处理器,它基于服务质量(Quality of Service,QoS)和其他需求对消息进行后续处理(如持久化或处理SOAP消息标头);
  • 把消息传递给网络传输,向目标Web服务交付消息;
  • 接收来自网络传输的SOAP消息响应;
  • 把SOAP响应消息传递给序列化子系统,把它反序列化为Java对象,该Java对象是SEI的返回类型指定类的实例;
  • 返回反序列化的SOAP响应消息,完成SEI的调用。

3、序列化子系统的含义(Serialization)
Web Services容器里面有许多SOAP端点,每个SOAP端点与一组Web服务相关联,一个端点有一个与之关联的WSDL接口,该接口定义了能在这个端点上执行的操作。
(1)在调用过程中序列化子系统的角色
  • 接收来自Web服务代理的参数;
  • 将参数(java类的一个实例)序列化为imported:xxx的一个实例;
  • 将参数组合到wrapper:xxx的实例中;
  • 将wrapper:xxx实例传递给Web服务代理,再嵌入SOAP消息中,并发送到SOAP端点。
序列化子系统是通过Java接口调用Web服务这一过程核心的。
这些从Java类到目标XML Schema组件的转换称为类型映射,为了实现这种映射,序列化引擎需要一套映射策略序列化上下文由一组映射策略组成。
(2)实现类型映射的机制
  • 标准绑定:这种映射是由Java类到XML Schema的标准绑定预先定义的。Java类与XML Schema是一对一的关系,JWS采用的就是这种方法,并且允许用户进行定制。JAXB和JAX-WS规范描述了标准绑定;
  • 源代码标注:JWS使用这种方法提供标准绑定之上的映射定制。目标Java类源代码中的标注可以修改标准绑定的行为,指定如何将Java类映射为XML Schema组件,如何对Web服务的WSDL描述进行调整;
  • 算法:类型映射嵌入序列化子系统执行的算法中。JAX-RPC 1.1和Axis 1.x采用的就是这种方法;
  • 基于规则的映射:将类型映射指定为一些规则,这些规则的创建和编辑可以独立于序列化子系统,序列化子系统只负责这些规则的解释执行。SOA-J和Castor序列化框架就是用这种方法。

4、部署子系统
(1)部署子系统的职责




0 0
原创粉丝点击