Java for Web学习笔记(八四):SOAP(1)小例子准备
来源:互联网 发布:韩子高 网络剧 编辑:程序博客网 时间:2024/06/05 04:00
SOAP现在碰到不多,一般是较为旧的系统。SOAP可以封装在不同的消息,在一个web app中,使用最为方便的自然是封装在HTTP的消息中。我们将在小例子中增加第三个上下文,用于实现soap api。
Schema
SOAP是contract-first的开发,我们先定义其schema。soap的body是xml,通过wsdl语言来定义,这是soap的关键核心。文件为*.xsd。在Eclipse中可以通过图形工具来帮助我们编写。
下面是利用工具生成的support.xsd。
<?xml version="1.0" encoding="UTF-8"?><schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/support" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:support="http://www.example.org/support"> <element name="ticketsRequest" type="support:ticketsRequestType"></element> <complexType name="ticketsRequestType"></complexType> ... ...</schema>看起来有些乱,接口定义和数据定义混在一起,看看书中给的例子,将namespace稍微修改,改成和自动生成的一致,另外增加了一些注释。
<?xml version="1.0" encoding="UTF-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.example.org/support" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:support="http://www.example.org/support"> <!-- 定义接口部分 --> <xs:element name="ticketsRequest" type="support:ticketsRequestType" /> <xs:element name="ticketRequest" type="support:selectTicketType" /> <xs:element name="createTicket" type="support:createTicketType"/> <xs:element name="deleteTicket" type="support:selectTicketType"/> <xs:element name="ticket" type="support:ticketType" /> <xs:element name="tickets" type="support:ticketsType" /> <!-- 定义数据格式部分 --> <xs:complexType name="ticketType"> <xs:sequence> <xs:element type="xs:long" name="id" minOccurs="0"/> <xs:element type="xs:string" name="customerName" minOccurs="0"/> <xs:element type="xs:dateTime" name="dateCreated" minOccurs="0"/> <xs:element type="xs:string" name="subject"/> <xs:element type="xs:string" name="body"/> <xs:element type="support:attachmentType" name="attachment" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="ticketsRequestType"> <xs:sequence /> </xs:complexType> <xs:complexType name="selectTicketType"> <xs:sequence> <xs:element type="xs:long" name="id"/> </xs:sequence> </xs:complexType> <xs:complexType name="createTicketType"> <xs:sequence> <xs:element type="support:ticketType" name="ticket"/> </xs:sequence> </xs:complexType> <xs:complexType name="ticketsType"> <xs:sequence> <xs:element type="support:ticketType" name="ticket" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="attachmentType"> <xs:sequence> <xs:element type="xs:string" name="name"/> <xs:element type="xs:string" name="mimeContentType"/> <xs:element type="xs:base64Binary" name="contents"/> </xs:sequence> </xs:complexType></xs:schema>
新增依赖: Spring Web Services
Spring Web Services项目独立于spring framework,实现对soap支持,另外,我们需要增加wsdl(Web Services Description Language)的支持,否则会报:Caused by: java.lang.NoClassDefFoundError: javax/wsdl/extensions/ExtensibilityElement在pom.xml文件中添加:
<dependency> <groupId>org.springframework.ws</groupId> <artifactId>spring-ws-core</artifactId> <version>2.4.0.RELEASE</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.3</version> </dependency>
相关链接: 我的Professional Java for Web Applications相关文章
阅读全文
0 0
- Java for Web学习笔记(八四):SOAP(1)小例子准备
- Java for Web学习笔记(八五):SOAP(2)小例子
- Java for Web学习笔记(四八):WebSocket(5)encoder,decoder和configurator
- Java for Web学习笔记(八十):RESTful和SOAP:一般性了解
- Java for Web学习笔记(八八):消息和集群(3)序列化Serializable
- Java for Web学习笔记(八六):消息和集群(1)一般性了解
- Java for Web学习笔记(九八):持久化初探(3)JPA小例子(上)
- Java for Web学习笔记(九九):持久化初探(4)JPA小例子(下)
- Java for Web学习笔记(四四):WebSocket(1)演化历程
- Spring学习笔记(八):数据库连接池的小例子
- Java for Web学习笔记(五三):Spring框架简介(2)一些准备
- Java Web学习笔记(八)hibernate
- Java for Web学习笔记(四九):Log(1)log很重要
- Java for Web学习笔记(五八):Spring框架简介(7)bean的profile
- Java for Web学习笔记(八二):RESTful(2)返回错误信息
- Java for Web学习笔记(八三):RESTful(3)Controller
- Java for Web学习笔记(五五):Spring框架简介(4)多Context的例子
- Java for Web学习笔记(六七):Service和Repository(2)抽象分层例子
- kali 基本命令语言
- 第二讲,计算机网络概述(下)
- Linux中makefile过程(尚未学完)
- React Native项目结构
- Caffe2-windows下caffe的gpu加速
- Java for Web学习笔记(八四):SOAP(1)小例子准备
- java序列化与反序列化(1)------序列化、反序列化概念浅述
- Unity2D游戏入门教程(一)宝石迷阵(4)选择并交换宝石
- c#--String Builder --字符串高效拼接
- STM32 定时器计数器 更新事件
- AsyncTask 源码解析
- db2中的常用数据类型
- linux终端常用快捷键
- [siggraph17]《使命召唤13:无限战争》光照技术