教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

WebService CXF学习(6)

来源:网络收集 时间:2026-09-28
导读: 9. HelloService service = (HelloService)factory.create(); 10. 11. Customer c1 = new Customer(); 12. c1.setAge(1); 13. c1.setName(\14. 15. Customer c2 = new Customer(); 16. c2.setAge(2); 17. c2.setNam

9. HelloService service = (HelloService)factory.create(); 10.

11. Customer c1 = new Customer(); 12. c1.setAge(1); 13. c1.setName(\14.

15. Customer c2 = new Customer(); 16. c2.setAge(2); 17. c2.setName(\18.

19. service.save(c1, c2);

20. service.test(\21. } 22. } 23.

最后,测试程序

运行服务端程序,在浏览器地址栏输入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=[\Content-Type=[text/xml; charset=UTF-8], Accept=[*/*], Pragma=[no-cache], Cache-Control=[no-cache]} Payload:

xmlns:soap=\xmlns:ns1=\

Josen --------------------------------------

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:

xmlns:soap=\

xmlns=\xmlns:ns1=\--------------------------------------

2010-01-09 20:41:56.578::INFO: seeing JVM BUG(s) - cancelling interestOps==0

当客户端向服器发送请求时,服务端LoggingInInterceptor拉截客户端发送过来的SOAP消息,如下: 引用

Josen

客户端将请求信息封闭在中,当然也可以将其放到

,只要在@WebParam中的header设置成true,默认为false;

服务器接到请求之后,响应客户端。同样以SOAP形式将信息封装好发回客户端,SOAP信息如下: 引用

WebService CXF学习(进阶篇4):JAXB剖析 前面几节我们讲解对象传递,但是通常情况下我们不直接传对象,因为直接传递对象安全性差,而且暴露了实体对象。所以我们选择传递XML文件,当然也可以传递JSON对象。这节我只针对传递XML,那么JAVA绑定成XML,服务端将XML解析成Java对象有什么工具可用吗,其实这样的工具多的是。这里我选择一个比较简单的JAXB工具来讲解一下。

JAXB(Java Architecture for XML Binding)提供了一个快速而方便的方式绑定XML Schemas和java,使java程序员能够很方便的在java应用程序中处理XML数据。JAXB提供了将XML文档解组为java内容树的方法,以及将java内容树重新编组回XML文档的方法。JAXB同样也提供了一种从java对象生成XML Schema的方式。

这里有几个重要的定义:

编组(Marshalling)是把内存中的数据转化到存储媒介上的过程。因此在 Java 和 XML 环境中,编组就是把一些 Java 对象转化成一个(或多个) XML 文档。在数据库环境中,则是把 Java 表示的数据存入数据库。显然,编组的秘密在于把 Java 实例中的面向对象结构转化成适用于 XML 的 扁平结构,或者 RDBMS 中的关系结构(使用 Java 技术转换到 OODBMS 实际上很简单)。工作原理如下图所示:

解组(Unmarshalling) 是把数据从存储媒介转换到内存中的过程--正好与编组相反。因此需要把 XML 文档解组到 Java VM 中。这里的复杂性不是在扁平数据中,因为这不是必需的,而在于从正确的数据到正确的 Java 代码变量的映射。如果映射是错误的,就不可能正确地访问数据。当然,如果再尝试重新编组还会造成更大的问题,并且问题传播得很快。工作原理如下图所示:

往返(Round-tripping)可能是最重要也最容易误解的数据绑定术语。往返用于描述从存储媒介到内存然后回到存储媒介的完整循 环。在 XML 和 Java 技术环境中,这就意味着从 XML 文档到 Java 实例变量,然后再回到 XML 文档。正确的往返要求,如果中间没有修改数据,XML 输入和 XML 输出应该是等同的。

下载地址:http://java.sun.com/developer/technicalArticles/WebServices/jaxb/

我们还以例子来说明它的工作原理,直观点。 第一步,创建一个Customer对象 Java代码

1. @XmlRootElement(name=\

2. @XmlAccessorType(XmlAccessType.FIELD) 3. @XmlType(name = \4. public class Customer { 5.

6. @XmlAttribute(required = true) 7. protected String name;

8. @XmlAttribute(required = true) 9. protected int age; 10. 11. /**

12. * Gets the value of the name property. 13. * 14. * @return

15. * possible object is 16. * {@link String } 17. * 18. */

19. public String getName() { 20. return name; 21. } 22. 23. /**

24. * Sets the value of the name property. 25. *

26. * @param value

27. * allowed object is 28. * {@link String } 29. * 30. */

31. public void setName(String value) { 32. this.name = value; 33. } 34. 35. /**

36. * Gets the value of the age property. 37. * 38. */

39. public int getAge() { 40. return age; 41. } 42. 43. /**

44. * Sets the value of the age property. 45. *

46. */

47. public void setAge(int value) { 48. this.age = value; 49. } 50. 51. } 52. 53.

第二步,创建一个测试类 Java代码

1. public class SoapClient { 2.

3. private final static String MODEL = \

4. public static void main(String[] args) throws ParserConfigurationException, JAXB

Exception, TransformerException{ 5.

6.

7. ObjectFactory factory = new ObjectFactory(); 8. …… 此处隐藏:2632字,全部文档内容请下载后查看。喜欢就下载吧 ……

WebService CXF学习(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/446324.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)