前面几节都是讲一些理论知识,现在又用一个例子来说明一下,这一节我们就CXF框架对象传递进行讲解。
@XmlRootElement-指定XML根元素名称(可选) @XmlAccessorType-控制属性或方法序列化 四种方案: FIELD-对每个非静态,非瞬变属性JAXB工具自动绑定成XML,除非注明XmlTransient NONE-不做任何处理 PROPERTY-对具有set/get方法的属性进行绑定,除非注明XmlTransient PUBLIC_MEMBER -对有set/get方法的属性或具有共公访问权限的属性进行绑定,除非注 明XmlTransient @XmlType-映射一个类或一个枚举类型成一个XML Schema类型 第二步:创建WebService接口
每三步:创建WebService接口实现类
第四步:创建服务端
第五步:创建客户端
最后,测试程序 运行服务端程序,在浏览器地址栏输入http://localhost:8080/helloService?wsdl查看接口是否发布成功。成功则运行一下客户端程序,看看对象传输是否成功。 现在我们来分析一下控制打印的日志信息。 引用 信息: Inbound Message ---------------------------- ID: 1 Address: /HelloWorld Encoding: UTF-8 Content-Type: text/xml; charset=UTF-8 Headers: {content-type=[text/xml; charset=UTF-8], connection=[keep-alive], Host=[localhost:9000], Content-Length=[184], SOAPAction=[""], User-Agent=[Apache CXF 2.2.2], Content-Type=[text/xml; charset=UTF-8], Accept=[*/*], Pragma=[no-cache], Cache-Control=[no-cache]} Payload: <soap:Envelope xmlns:soap="http://schemas./soap/envelope/"><soap:Body><ns1:say xmlns:ns1="http://client./"><text> Josen</text></ns1:say></soap:Body></soap:Envelope> -------------------------------------- 2010-1-9 20:41:56 org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose 信息: Outbound Message --------------------------- ID: 1 Encoding: UTF-8 Content-Type: text/xml Headers: {} Payload: <soap:Envelope xmlns:soap="http://schemas./soap/envelope/"><soap:Header><text xmlns="http://client./">hi Josen</text></soap:Header><soap:Body><ns1:sayResponse xmlns:ns1="http://client./"></ns1:sayResponse></soap:Body></soap:Envelope> -------------------------------------- 2010-01-09 20:41:56.578::INFO: seeing JVM BUG(s) - cancelling interestOps==0 当客户端向服器发送请求时,服务端LoggingInInterceptor拉截客户端发送过来的SOAP消息,如下: 引用 <soap:Envelope xmlns:soap="http://schemas./soap/envelope/"> <soap:Body> <ns1:sayHi xmlns:ns1="http://client./"> <text>Josen</text> </ns1:sayHi> </soap:Body> </soap:Envelope> 客户端将请求信息封闭在<soap:Body></soap:Body>中,当然也可以将其放到<soap:Header></soap:Header>,只要在@WebParam中的header设置成true,默认为false; 服务器接到请求之后,响应客户端。同样以SOAP形式将信息封装好发回客户端,SOAP信息如下: 引用 <soap:Envelope xmlns:soap="http://schemas./soap/envelope/"> <soap:Header> <text xmlns="http://client./">hi Josen</text> </soap:Header> <soap:Body> <ns1:sayResponse xmlns:ns1="http://client./"></ns1:sayResponse> </soap:Body> </soap:Envelope> |
|
来自: 昵称21964271 > 《webservice》