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支持的类型。