Webservice_21_SOAP的基于契约优先开发用户管理_实现Wsdl
来源:互联网 发布:ubuntu怎么安装jdk 编辑:程序博客网 时间:2024/05/01 21:38
非常感谢孙浩老师。
先编写schema,user.xsd:
<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"targetNamespace="http://service.lichen.cn" xmlns:tns="http://service.lichen.cn"elementFormDefault="qualified"><xsd:element name="add" type="tns:addType" /><xsd:element name="addResponse" type="tns:addResponseType" /><xsd:element name="delete" type="tns:deleteType" /><xsd:element name="deleteResponse" type="tns:deleteResponseType" /><xsd:element name="list" type="tns:listType" /><xsd:element name="listResponse" type="tns:listResponseType" /><xsd:element name="login" type="tns:loginType" /><xsd:element name="loginResponse" type="tns:loginResponseType" /><xsd:complexType name="addType"><xsd:sequence><xsd:element name="user" type="tns:user" /></xsd:sequence></xsd:complexType><xsd:complexType name="addResponseType"><xsd:sequence /></xsd:complexType><xsd:complexType name="deleteType"><xsd:sequence><xsd:element name="username" type="xsd:string" /></xsd:sequence></xsd:complexType><xsd:complexType name="deleteResponseType"><xsd:sequence /></xsd:complexType><xsd:complexType name="listType"><xsd:sequence /></xsd:complexType><xsd:complexType name="listResponseType"><xsd:sequence minOccurs="1" maxOccurs="unbounded"><xsd:element name="user" type="tns:user" /></xsd:sequence></xsd:complexType><xsd:complexType name="loginType"><xsd:sequence><xsd:element name="username" type="xsd:string" /><xsd:element name="passwrod" type="xsd:string" /></xsd:sequence></xsd:complexType><xsd:complexType name="loginResponseType"><xsd:sequence><xsd:element name="user" type="tns:user" /></xsd:sequence></xsd:complexType><xsd:complexType name="user"><xsd:sequence><xsd:element name="username" type="xsd:string" /><xsd:element name="nickname" type="xsd:string" /><xsd:element name="passwrod" type="xsd:string" /></xsd:sequence></xsd:complexType></xsd:schema>
编写wsdl:user.wsdl
<?xml version="1.0" encoding="UTF-8" standalone="no"?><wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tns="http://service.lichen.cn" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="UserService"targetNamespace="http://service.lichen.cn"><wsdl:types><xsd:schema targetNamespace="http://service.lichen.cn"><xsd:include schemaLocation="user.xsd"></xsd:include></xsd:schema></wsdl:types><wsdl:message name="add"><wsdl:part element="tns:add" name="parameters" /></wsdl:message><wsdl:message name="addResponse"><wsdl:part element="tns:addResponse" name="parameters" /></wsdl:message><wsdl:message name="delete"><wsdl:part element="tns:delete" name="parameters" /></wsdl:message><wsdl:message name="deleteResponse"><wsdl:part element="tns:deleteResponse" name="parameters" /></wsdl:message><wsdl:message name="login"><wsdl:part element="tns:login" name="parameters" /></wsdl:message><wsdl:message name="loginResponse"><wsdl:part element="tns:loginResponse" name="parameters" /></wsdl:message><wsdl:message name="list"><wsdl:part element="tns:list" name="parameters" /></wsdl:message><wsdl:message name="listResponse"><wsdl:part element="tns:listResponse" name="parameters" /></wsdl:message><wsdl:portType name="IMyService"><wsdl:operation name="add"><wsdl:input message="tns:add" /><wsdl:output message="tns:addResponse" /></wsdl:operation><wsdl:operation name="delete"><wsdl:input message="tns:delete" /><wsdl:output message="tns:deleteResponse" /></wsdl:operation><wsdl:operation name="login"><wsdl:input message="tns:login" /><wsdl:output message="tns:loginResponse" /></wsdl:operation><wsdl:operation name="list"><wsdl:input message="tns:list" /><wsdl:output message="tns:listResponse" /></wsdl:operation></wsdl:portType><wsdl:binding name="userServiceSOAP" type="tns:IMyService"><soap:binding style="document"transport="http://schemas.xmlsoap.org/soap/http" /><wsdl:operation name="add"><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" /></wsdl:output></wsdl:operation><wsdl:operation name="delete"><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" /></wsdl:output></wsdl:operation><wsdl:operation name="login"><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" /></wsdl:output></wsdl:operation><wsdl:operation name="list"><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" /></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="UserService"><wsdl:port binding="tns:userServiceSOAP" name="UserServicePort"><soap:address location="http://localhost:8800/us/" /></wsdl:port></wsdl:service></wsdl:definitions>
使用wsimport得到Java文件,把接口IMyService.java拷贝到服务端项目中(删除IMyService中报错的注解)。
由于IMyService.java需要User.java,在服务端中新建:
package cn.lichen.entity;import java.io.Serializable;public class User implements Serializable{private static final long serialVersionUID = 1L;private String username;private String nickname;private String password;public User() {}public User(String username, String nickname, String password) {super();this.username = username;this.nickname = nickname;this.password = password;}public String getUsername() {return username;}public String getNickname() {return nickname;}public String getPassword() {return password;}public void setUsername(String username) {this.username = username;}public void setNickname(String nickname) {this.nickname = nickname;}public void setPassword(String password) {this.password = password;}}
添加接口实现类,还没有实现功能,注意类名上的注解必须要:
package cn.lichen.service;import java.util.List;@WebService(endpointInterface = "cn.lichen.service.IMyService", wsdlLocation = "META-INF/wsdl/user.wsdl", portName = "UserServicePort", serviceName = "UserService", targetNamespace = "http://service.lichen.cn")public class MyServiceImpl implements IMyService {@Overridepublic void add(User user) {}@Overridepublic void delete(String username) {}@Overridepublic User login(String username, String passwrod) {return null;}@Overridepublic List<User> list() {return null;}}
package cn.lichen.service;import javax.xml.ws.Endpoint;public class MyService {public static void main(String[] args) {Endpoint.publish("http://localhost:8800/us", new MyServiceImpl());}}
启动服务后,可成功访问http://localhost:8800/us?wsdl。但使有wsimport导出Java会报错,需要把user.xsd和user.wsdl整合。
<?xml version="1.0" encoding="UTF-8" standalone="no"?><wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tns="http://service.lichen.cn" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="UserService"targetNamespace="http://service.lichen.cn"><wsdl:types><xsd:schema targetNamespace="http://service.lichen.cn"><!-- <xsd:include schemaLocation="user.xsd"></xsd:include> --><xsd:element name="add" type="tns:addType" /><xsd:element name="addResponse" type="tns:addResponseType" /><xsd:element name="delete" type="tns:deleteType" /><xsd:element name="deleteResponse" type="tns:deleteResponseType" /><xsd:element name="list" type="tns:listType" /><xsd:element name="listResponse" type="tns:listResponseType" /><xsd:element name="login" type="tns:loginType" /><xsd:element name="loginResponse" type="tns:loginResponseType" /><xsd:complexType name="addType"><xsd:sequence><xsd:element name="user" type="tns:user" /></xsd:sequence></xsd:complexType><xsd:complexType name="addResponseType"><xsd:sequence /></xsd:complexType><xsd:complexType name="deleteType"><xsd:sequence><xsd:element name="username" type="xsd:string" /></xsd:sequence></xsd:complexType><xsd:complexType name="deleteResponseType"><xsd:sequence /></xsd:complexType><xsd:complexType name="listType"><xsd:sequence /></xsd:complexType><xsd:complexType name="listResponseType"><xsd:sequence minOccurs="1" maxOccurs="unbounded"><xsd:element name="user" type="tns:user" /></xsd:sequence></xsd:complexType><xsd:complexType name="loginType"><xsd:sequence><xsd:element name="username" type="xsd:string" /><xsd:element name="passwrod" type="xsd:string" /></xsd:sequence></xsd:complexType><xsd:complexType name="loginResponseType"><xsd:sequence><xsd:element name="user" type="tns:user" /></xsd:sequence></xsd:complexType><xsd:complexType name="user"><xsd:sequence><xsd:element name="username" type="xsd:string" /><xsd:element name="nickname" type="xsd:string" /><xsd:element name="passwrod" type="xsd:string" /></xsd:sequence></xsd:complexType></xsd:schema></wsdl:types><wsdl:message name="add"><wsdl:part element="tns:add" name="parameters" /></wsdl:message><wsdl:message name="addResponse"><wsdl:part element="tns:addResponse" name="parameters" /></wsdl:message><wsdl:message name="delete"><wsdl:part element="tns:delete" name="parameters" /></wsdl:message><wsdl:message name="deleteResponse"><wsdl:part element="tns:deleteResponse" name="parameters" /></wsdl:message><wsdl:message name="login"><wsdl:part element="tns:login" name="parameters" /></wsdl:message><wsdl:message name="loginResponse"><wsdl:part element="tns:loginResponse" name="parameters" /></wsdl:message><wsdl:message name="list"><wsdl:part element="tns:list" name="parameters" /></wsdl:message><wsdl:message name="listResponse"><wsdl:part element="tns:listResponse" name="parameters" /></wsdl:message><wsdl:portType name="IMyService"><wsdl:operation name="add"><wsdl:input message="tns:add" /><wsdl:output message="tns:addResponse" /></wsdl:operation><wsdl:operation name="delete"><wsdl:input message="tns:delete" /><wsdl:output message="tns:deleteResponse" /></wsdl:operation><wsdl:operation name="login"><wsdl:input message="tns:login" /><wsdl:output message="tns:loginResponse" /></wsdl:operation><wsdl:operation name="list"><wsdl:input message="tns:list" /><wsdl:output message="tns:listResponse" /></wsdl:operation></wsdl:portType><wsdl:binding name="userServiceSOAP" type="tns:IMyService"><soap:binding style="document"transport="http://schemas.xmlsoap.org/soap/http" /><wsdl:operation name="add"><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" /></wsdl:output></wsdl:operation><wsdl:operation name="delete"><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" /></wsdl:output></wsdl:operation><wsdl:operation name="login"><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" /></wsdl:output></wsdl:operation><wsdl:operation name="list"><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" /></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="UserService"><wsdl:port binding="tns:userServiceSOAP" name="UserServicePort"><soap:address location="http://localhost:8800/us/" /></wsdl:port></wsdl:service></wsdl:definitions>
使用wsimport导出Java文件,拷贝到客户端中。
基本构架完成。
- Webservice_21_SOAP的基于契约优先开发用户管理_实现Wsdl
- Webservice_23_SOAP的基于契约优先开发用户管理_实现客户端
- Webservice_25_SOAP的基于契约优先开发用户管理_实现Jsp页面功能
- webservice24--基于契约优先开发用户管理小功能--实现wsdl
- soap基于契约优先WSDL的开发
- Webservice_23_SOAP的基于契约优先开发用户管理_添加异常
- Webservice_24_SOAP的基于契约优先开发用户管理_部署到Tomcat
- Webservice_26_SOAP的基于契约优先开发用户管理_通过Hander加入控制信息
- Webservice_19_SOAP的基于契约优先WSDL的开发流程
- 一个简单的模拟用户名是否存在的基于契约优先WSDL的webservice开发实例
- webservice25--基于契约优先开发用户管理小功能--异常处理
- webservice26--基于契约优先开发用户管理小功能--部署在Tomcat
- WebService:跟孔浩学习(契约优先、Schema、WSDL、SOAP、用户管理小系统)
- webservice基于契约优先开发
- webservice(六)基于契约优先的wsdl文件生成webservice服务代码实例
- CXF Spring 基于契约优先开发
- 契约优先方式编写wsdl + 隐式Header
- Webservice_20_SOAP的基于契约优先头信息处理(隐式头信息)
- 图形的保存和重绘
- 网站的上传文件问题
- Maya: 菜单 编辑NURBS >在曲面上投影曲线
- ext2综述
- PythonChallenge 挑战之路 Level-6
- Webservice_21_SOAP的基于契约优先开发用户管理_实现Wsdl
- 数组的顺序表示和实现
- 文件操作
- Maya: 菜单 编辑NURBS >曲面相交
- unity 事件(委托)
- 2013华为校园招聘机试题1
- ext2文件预分配
- 对数据库所有表名的读取
- WinCE程序C/C++/C#实现带时间标记的日志记录