1、首先编写Wsdl(基于契约优先的方式),要注意的是命名空间(若是使用include或import)最好使用一致的,代码如下:

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.xiaoqiaolv/ws"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="UserServiceImpl"
targetNamespace="http://www.xiaoqiaolv/ws">
<wsdl:types>
<xsd:schema targetNamespace="http://www.xiaoqiaolv/ws">
<!-- <xsd:include schemaLocation="UserSchema.xsd"/> -->
<!-- <xsd:import namespace="http://www.xiaoqiaolv/ws" schemaLocation="UserSchema.xsd"/>--> <xsd:element name="add" type="tns:add"/>
<xsd:element name="addResponse" type="tns:addResponse"/>
<xsd:element name="delete" type="tns:delete"/>
<xsd:element name="deleteResponse" type="tns:deleteResponse"/>
<xsd:element name="login" type="tns:login"/>
<xsd:element name="loginResponse" type="tns:loginResponse"/>
<xsd:element name="list" type="tns:list"/>
<xsd:element name="listResponse" type="tns:listResponse"/> <xsd:complexType name="add">
<xsd:sequence>
<xsd:element name="user" type="tns:user"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="addResponse">
<xsd:sequence/>
</xsd:complexType> <xsd:complexType name="delete">
<xsd:sequence>
<xsd:element name="username" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="deleteResponse">
<xsd:sequence/>
</xsd:complexType> <xsd:complexType name="list">
<xsd:sequence/>
</xsd:complexType>
<xsd:complexType name="listResponse">
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element name="user" type="tns:user"/>
</xsd:sequence>
</xsd:complexType> <xsd:complexType name="login">
<xsd:sequence>
<xsd:element name="username" type="xsd:string"/>
<xsd:element name="password" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="loginResponse">
<xsd:sequence/>
</xsd:complexType>
<xsd:complexType name="user">
<xsd:sequence>
<xsd:element name="id" type="xsd:int"/>
<xsd:element name="username" type="xsd:string"/>
<xsd:element name="password" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types> <wsdl:message name="addMessage">
<wsdl:part element="tns:add" name="add"/>
</wsdl:message>
<wsdl:message name="addResponseMessage">
<wsdl:part element="tns:addResponse" name="addResponse"/>
</wsdl:message> <wsdl:message name="deleteMessage">
<wsdl:part name="delete" element="tns:delete"/>
</wsdl:message>
<wsdl:message name="deleteResponseMessage">
<wsdl:part name="deleteResponse" element="tns:deleteResponse"/>
</wsdl:message> <wsdl:message name="listMessage">
<wsdl:part name="list" element="tns:list"/>
</wsdl:message>
<wsdl:message name="listResponseMessage">
<wsdl:part name="listResponse" element="tns:listResponse"/>
</wsdl:message> <wsdl:message name="loginMessage">
<wsdl:part name="login" element="tns:login"/>
</wsdl:message>
<wsdl:message name="loginResponseMessage">
<wsdl:part name="loginResponse" element="tns:loginResponse"></wsdl:part>
</wsdl:message> <wsdl:portType name="UserService">
<wsdl:operation name="add">
<wsdl:input message="tns:addMessage"/>
<wsdl:output message="tns:addResponseMessage"/>
</wsdl:operation> <wsdl:operation name="delete">
<wsdl:input message="tns:deleteMessage"/>
<wsdl:output message="tns:deleteResponseMessage"/>
</wsdl:operation> <wsdl:operation name="list">
<wsdl:input message="tns:listMessage"/>
<wsdl:output message="tns:listResponseMessage"/>
</wsdl:operation> <wsdl:operation name="login">
<wsdl:input message="tns:loginMessage"/>
<wsdl:output message="tns:loginResponseMessage"/>
</wsdl:operation>
</wsdl:portType> <wsdl:binding name="userBinding" type="tns:UserService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="add">
<soap:operation soapAction="http://www.xiaoqiaolv/ws/add"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation> <wsdl:operation name="delete">
<soap:operation soapAction="http://www.xiaoqiaolv/ws/delete"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation> <wsdl:operation name="login">
<soap:operation soapAction="http://www.xiaoqiaolv/ws/login"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation> <wsdl:operation name="list">
<soap:operation soapAction="http://www.xiaoqiaolv/ws/list"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="UserServiceImpl">
<wsdl:port binding="tns:userBinding" name="UserServiceImplPort">
<soap:address location="http://localhost:9999/ws"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

2、实现服务器端的应用实现,这个就不加代码了,根据wsdl文档用wsimport生成服务,只取出接口service,然后其他的和我们正常的web开发都一致。

3、服务端发布服务:public static void main(String[] args) {
        Endpoint.publish("http://localhost:9999/ws", new UserServiceImpl());
    }

4、实现客户端:根据服务网址http://localhost:9999/ws,生成服务,得到所有以.java为后缀的类,把整个包包含在自己的项目中

5、编写测试类:代码如下:

 public class Test {
private UserService userService;
private UserServiceImpl userServiceImpl; public void testWsdl(){
try {
URL url = new URL("http://localhost:9999/ws?wsdl");
QName qname = new QName("http://www.xiaoqiaolv/ws","UserServiceImpl");
userServiceImpl = new UserServiceImpl(url,qname);
userService = userServiceImpl.getUserServiceImplPort();
User user = new User();
user.setUsername("aaa");
user.setPassword("1111");
user.setId(21212);
userService.add(user);
List<User> list = userService.list();
for(User u:list){
System.out.println(u.getUsername());
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
public static void main(String[] args) {
new Test().testWsdl();
}
}

6、有问题的话可以打开tcpmon,对接口服务进行监听,查看客户端与服务端传递的信息java -jar tcpmon.jar

WebService从服务端到客户端的用例的更多相关文章

  1. spring mvc + mybaties + mysql 完美整合cxf 实现webservice接口 (服务端、客户端)

    spring-3.1.2.cxf-3.1.3.mybaties.mysql 整合实现webservice需要的完整jar文件 地址:http://download.csdn.net/detail/xu ...

  2. myeclipse-建立webservice服务端和客户端

    一.建立webservice服务端: 1.新建一个web service project,名称为webservice_server截图如下,点击finish. 2.选择工程,点击右键,选择new-&g ...

  3. 使用Apache CXF开发WebServices服务端、客户端

    在前一篇的博客中,我使用Xfire1.x来开发了WebServies的服务端. 但是如果你访问Apache的官网,可以看到xfire已经被合并了. 最新的框架叫做CXF. Apache CXF = C ...

  4. WebService-03-使用CXF开发服务端和客户端

    写在前面的话 前面两节说了使用Java提供的包开发服务端和客户端,现在使用CXF来开发,CXF提供了两个类发而服务,一个是ServerFactoryBean,另一个是JaxWsServerFactor ...

  5. C# 编写WCF简单的服务端与客户端

    http://www.wxzzz.com/1860.html Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Win ...

  6. asp.net获取服务端和客户端信息

    asp.net获取服务端和客户端信息 获取服务器名:Page.Server.ManchineName获取用户信息:Page.User 获取客户端电脑名:Page.Request.UserHostNam ...

  7. python thrift 服务端与客户端使用

    一.简介 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, ...

  8. IE8下服务端获取客户端文件的路径为C:/fakePath问题的解决方案

    上一篇文章上提到,IE8下服务端获取客户端文件的路径时,会变成C:/fakePath问题,于是乎通过文件路径去获得文件大小就失败了. 上网搜了一下,主要原因是IE8因为安全考虑,在上传文件时屏蔽了真实 ...

  9. 如何排查APP服务端和客户端是否支持ATS

    服务端排查 取得客户端直接连接的服务端域名及端口,例如mob.com.cn,端口443,即HTTPS默认端口.针对公网可访问的生产环境地址,建议使用的在线监测工具.https://wosign.ssl ...

随机推荐

  1. Git 和 GitHub 使用

    Git和GitHub的使用 Git是一款免费.开源的分布式版本控制系统. GitHub托管远程仓库,并提供一个web界面. 有2种协议支持从本地push代码到远程仓库. 一种是http,需要输入用户名 ...

  2. 百度富文本编辑器ueditor在jsp中的使用(ssm框架中的应用)

    折腾了一下午终于把百度富文本编辑器ueditor搞定了!   项目地址:https://github.com/724888/lightnote_new     首先我参考了一个ueditor的demo ...

  3. 基于Ubuntu12.04-server版的openstack F版搭建步骤

    本文为双节点搭建,分为计算(IP1)和控制节点(IP2) 说明: 计算节点组件: 1.mysql 2.keystone 3.Nova 4.glance 5.rabbitmq 控制节点组件: 1.cin ...

  4. bootstrap_下拉菜单+头部

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. CREELINKS平台_处理器CeCcp资源使用说明(CeCcp的配置与使用)

    0x00 CREELINKS平台简介     CREELINKS(创e联)是由大信科技有限公司研发,集合软硬件.操作系统.数据云储存.开发工具于一体,用于物联网产品的设计.研发与生产的平台.    平 ...

  6. 如何实现php字符串翻转?

    字符串:$str = "abcdefg"; // 方法一(直接使用php自带函数strrev($str)) print_r(strrev($str)); // 使用for循环方式, ...

  7. js设计模式--单体模式

    GOF里的23种设计模式, 也是在软件开发中早就存在并反复使用的模式. 如果程序员没有明确意识到他使用过某些模式, 那么下次他也许会错过更合适的设计 (这段话来自<松本行弘的程序世界>). ...

  8. 给ubuntu安装VNC远程桌面

    (只有背景,没有菜单栏问题没有解决)Virtual Network Computing(VNC)是进行远程桌面控制的一个软件.客户端的键盘输入和鼠标操作通过网络传输到远程服务器,控制服务器的操作.服务 ...

  9. shell基础学习系列(一)

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行. 输入一些代码: #!/bin/bash echo "Hello World !" &qu ...

  10. 初学ant

    项目管理第二步——ant  自动化完成项目的构建  Ant1.7.chm  Ant权威指南  Ant入门  Ant使用指南  Ant安装文件压缩包 dir 查看所有目录mkdir 创建目录 创建一个文 ...