webservice主要是解决两个系统或者两个应用程序之间的远程调用,它提供了一种通过web方式访问的api,调用是跨语言、跨平台的。

webservice的客户端与服务端进行交互的时候使用xml来传递数据。

soap协议,即简单对象访问协议,它是webservice的客户端与服务端进行交互的时候遵守的一个协议。

在服务端调用webservice服务时,我们可以通过Java jdk自带的一个命令wsimport,根据服务说明书生成本地Java代码,我们直接操作这些Java代码就可以调用webservice.

wsimport -d . wsdl地址 生成本地class文件

wsimport -s . wsdl地址 生成本地java文件,

wsimport -s . -p 包名 wsdl地址 生成本地java文件,并且指定包名

然后直接操作这些Java文件来调用服务端程序。

来看一段代码:

在服务端发布一个类:

发布程序,运行main方法,即表示发布:

public class PublishService {

    public static void main(String[] args) {
//java提供了一个专门的类,用来用来将一个Java应用程序发布成webservice
/**
* 两个参数,分别是
* 1.服务类对外的访问地址
* 2.服务类的一个实例
*/
Endpoint.publish("http://127.0.0.1:8888/helloService", new HelloService());
}
}

所发布的类:

//被发布的类上面必须有@WebService注解
@WebService
public class HelloService { /**
* 被发布的类中必须包含一个非静态的,非final的public方法
*/
public void helloWebService(){
System.out.println("hello webservice!");
} public User getUser(){
return new User("张三","zhangsan");
}
}

User.java

public class User {

    private String username;
private String nickname;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public User(String username, String nickname) {
this.username = username;
this.nickname = nickname;
}
}

通过wsimport获得服务器端的类:



成功获得服务器端的类,在F盘可以看到这些类,然后新建一个客户端project,把这些类拷贝进去,在客户端直接操作这些类就可以访问服务端程序:

客户端程序:

public class MyTest {

    public static void main(String[] args) {
HelloService helloService = new HelloServiceService()
.getHelloServicePort();
User user = helloService.getUser();
System.out.println(user.getNickname()+","+user.getUsername());
}
}

客户端输出:



成功拿到服务端数据。

如果调用helloWebService()方法

public class MyTest {

    public static void main(String[] args) {
HelloService helloService = new HelloServiceService()
.getHelloServicePort();
helloService.helloWebService();
}
}

则服务端输出:



成功调用服务端。

如果要传递视频,音频图片等消息,可以通过InputStream和OutputStream来实现。

这是通过wsimport的方式来调用服务端程序,下一篇我们看另外一种调用方式。

WebService学习笔记系列(一)的更多相关文章

  1. WebService学习笔记系列(二)

    soap(简单对象访问协议),它是在http基础之上传递xml格式数据的协议.soap协议分为两个版本,soap1.1和soap1.2. 在学习webservice时我们有一个必备工具叫做tcpmon ...

  2. WebService学习笔记系列(四)

    今天主要来看看服务端的编写及发布. 服务端的编写主要包括三个步骤: 1.编写一个接口,即SEI(server endpoint interface) 2.编写接口的实现类,即SIB (server i ...

  3. WebService学习笔记系列(三)

    网上有一些提供webservice服务的网站,我们要怎么调用呢? 今天来看个如何调用手机归属地查询服务.这个网站上提供了许多webservice服务,其中包括手机归属地查询服务,我们今天就用wsimp ...

  4. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  5. Dynamic CRM 2013学习笔记 系列汇总

    这里列出所有 Dynamic CRM 2013学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址: Dynamic CRM 2013学习笔记 系列汇总 ...

  6. SQLServer学习笔记系列3

    一.写在前面的话 今天又是双休啦!生活依然再继续,当你停下来的时候,或许会突然显得不自在.有时候,看到一种东西,你会发现原来在这个社会上,优秀的人很多,默默 吃苦努力奋斗的人也多!星期五早上按时上班, ...

  7. SQLServer学习笔记系列2

    一.写在前面的话 继上一次SQLServer学习笔记系列1http://www.cnblogs.com/liupeng61624/p/4354983.html以后,继续学习Sqlserver,一步一步 ...

  8. Dynamic CRM 2015学习笔记 系列汇总

    这里列出所有 Dynamic CRM 2015学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址:Dynamic CRM 2015学习笔记 系列汇总 一 ...

  9. 步步为营 SharePoint 开发学习笔记系列总结

    转:http://www.cnblogs.com/springyangwc/archive/2011/08/03/2126763.html 概要 为时20多天的sharepoint开发学习笔记系列终于 ...

随机推荐

  1. 【2011 Greater New York Regional 】Problem B The Rascal Triangle

    一个简单的规律题,每一列都是一个等差数列: 代码: #include<cstdio> #define ll long long using namespace std; int main( ...

  2. Stanford Parser学习入门(2)-命令行运行

    在Stanford parser目录中已经定义了一部分命令行工具以及图形界面,本文将介绍如何在windows使用这些工具进行语法分析,Linux下也有shell可以使用. 关于如何搭建环境请参考上一篇 ...

  3. IAR Embedded Workbench 破解方法+工具+授权文件

    转自IAR Embedded Workbench 破解方法+工具+授权文件 本文重点阐述了如何手动爆破 IAR EWARM 6.x以及生成License,目的一是和大家分享下,二是自己记录下过程,以便 ...

  4. Entity Framework快速入门--IQueryable与IEnumberable的区别(转载)

    IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用foreach遍历此object: IQueryable 接口 ...

  5. [转贴]Eclipse IDE for c++配置

    从工作到现在已经有快一年多没用过C/C++了,现在想重新捡起来,但是以前一直是在windows下面进行开发,使用最多的是Eclipse和Myeclipse,因为这些都是开源的软件,并不收费,所以现在也 ...

  6. [转贴]C编译过程概述

    http://my.oschina.net/apeng/blog/105245 C 编译过程概述 目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是G ...

  7. bzoj1486

    这里学了一个新知识叫分数规划这道题目是求∑w[i]/S最小首先二分答案k,然后如果某个环∑w[i]/S<=k即∑w[i]<=k*S-->∑w[i]-k*S<=0--->∑ ...

  8. Apache Struts 跨站脚本漏洞

    漏洞名称: Apache Struts 跨站脚本漏洞 CNNVD编号: CNNVD-201311-010 发布时间: 2013-11-04 更新时间: 2013-11-04 危害等级:    漏洞类型 ...

  9. 正则表达式, 用于Delphi

    表示不能为空 : [^\s]+ 只能输入数字和字母: ^[A-Za-z0-9]+$

  10. HDU-2368 Alfredo's Pizza Restaurant

    http://acm.hdu.edu.cn/status.php Alfredo's Pizza Restaurant Time Limit: 1000/1000 MS (Java/Others)   ...