SOAP 处理者
处理者访问代表一个RPC请求或响应的SOAP消息。处理者类必须实现javax.xml.rpc.handler接口。处理者能够用javax.xml.soap程序包中的API操纵SOAP消息。
下面是处理者能够执行的任务举例:
- 加密解密
- 记录日志和审计
- 缓冲
- 针对特定应用的SOAP消息头处理
处理者链条是一系列的处理者。你可以为客户端和服务器个指定一个处理者链条:在客户端,请在jaxrpc-ri.xml文件中包含<handlerChains> 元素,在服务器端,请在config.xml文件中包含该元素。
下面是config.xml文件中<handlerChains>元素的一个例子:
<handlerChains> <chain runAt="server"
roles= "http://acme.org/auditing http://acme.org/morphing" xmlns:ns1="http://foo/foo-1">
<handler className="acme.MyHandler"
headers ="ns1:foo ns1:bar"/> <property name="property" value="xyz"/>
</handler>
</chain>
</handlerChains>
JAX-RPC支持的Java语言类型
JAX-RPC把Java编程语言类型映射到XML/WSDL定义。例如,JAX-RPC把java.lang.String类映射为xsd:string这个XML数据类型。作为应用程序开发人员,你需要了解这些映射的细节,但必须明白并不是所有Java 2 标准版 (J2SE)中的类都能够在JAX-RPC中被用作方法的参数和返回类型。
J2SE SDK类
JAX-RPC支持以下这些J2SE SDK类:
- java.lang.Boolean
- java.lang.Byte
- java.lang.Double
- java.lang.Float
- java.lang.Integer
- java.lang.Long
- java.lang.Short
- java.lang.String
- java.math.BigDecimal
- java.math.BigInteger
- java.util.Calendar
- java.util.Date
这个版本的JAX-RPC还支持几个java.util.Collection接口的实现类。下表显示了被支持的类。第一列列出了java.util.Collection的子接口,第二列列出了该子接口支持的类。
支持的类
java.util.collection子接口 |
支持的类 |
List |
Array List LinkedList Stack Vector |
Map |
HashMap Hashtable Properties TreeMap |
Set |
HashSet TreeSet |
基本类型
JAX-RPC支持以下的Java编程语言基本类型:
- boolean
- byte
- double
- float
- int
- long
- short
数组
JAX-RPC还支持成员是JAX-RPC支持类型的数组。例如支持数组int []和String []。而且还支持多维数组,例如BigDecimal [][]。
应用程序类
JAX-RPC还支持为应用程序编写的类。例如,在一个订单处理应用程序中你可能提供了名为Order、LineItem、和Product的类。JAX-RPC规范把这些类当作值类型引用,因为他们的值(或状态)可以在客户端与远程服务之间当作参数或返回值被传递。
为了能被JAX-RPC支持,应用程序类必须符合以下规则:
- 它必须拥有一个默认的构造函数。
- 它必须没有实现(直接或者间接)java.rmi.Remote接口。
- 它的成员必须是JAX-RPC支持类型。
类中可能含有公共的、私有的、或是保护的成员。为了在远程调用中传递(或返回)它的值,该成员必须满足以下要求:
- 公共成员不能是final或者transient类型的。
- 非公共成员必须有相应的getter和 setter方法。
JavaBeans组件
JAX-RPC还支持JavaBean组件,它们必须符合与应用程序类相同的一系列规则。而且,JavaBean组件还必须为每个bean属性提供getter和setter方法。Bean属性的类型必须是JAX-RPC支持的类型。 
|