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方法,即表示发布:

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

所发布的类:

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

User.java

  1. public class User {
  2. private String username;
  3. private String nickname;
  4. public String getUsername() {
  5. return username;
  6. }
  7. public void setUsername(String username) {
  8. this.username = username;
  9. }
  10. public String getNickname() {
  11. return nickname;
  12. }
  13. public void setNickname(String nickname) {
  14. this.nickname = nickname;
  15. }
  16. public User(String username, String nickname) {
  17. this.username = username;
  18. this.nickname = nickname;
  19. }
  20. }

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



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

客户端程序:

  1. public class MyTest {
  2. public static void main(String[] args) {
  3. HelloService helloService = new HelloServiceService()
  4. .getHelloServicePort();
  5. User user = helloService.getUser();
  6. System.out.println(user.getNickname()+","+user.getUsername());
  7. }
  8. }

客户端输出:



成功拿到服务端数据。

如果调用helloWebService()方法

  1. public class MyTest {
  2. public static void main(String[] args) {
  3. HelloService helloService = new HelloServiceService()
  4. .getHelloServicePort();
  5. helloService.helloWebService();
  6. }
  7. }

则服务端输出:



成功调用服务端。

如果要传递视频,音频图片等消息,可以通过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. 因为中国队赢了,再撸一下DJANGO的官方文档吧

    对比一下,CBVS和FBVS,哪个方便? from django.shortcuts import render from django.http import Http404 from django ...

  2. CF_91B

    题目意思是这样的:给定n个整数,求第i个数右边的距离它最远的比它小的数的下标之差然后再减1. 这里既然是需要知道距离该数最远的下标,可以从右至左扫描一遍,然后按照单调递减的顺序入栈,即只把比栈顶元素小 ...

  3. 未能找到类型或命名空间名称DbContext

    Visual Studio调试 .NET 项目时报错: 未能找到类型或命名空间名称“DbContext” 解决办法: 首先 右键 引用——System.Data.Entity 其次,在自己项目里搜索E ...

  4. Learning WCF 书中的代码示例下载地址

    Learning WCF Download Example Code 第一个压缩文件LearningWCF.zip是VS2005创建的项目,不要下载这个. 建议下载VS2008版的,以及Media

  5. [转]NHibernate之旅(5):探索Insert, Update, Delete操作

    本节内容 操作数据概述 1.新建对象 2.删除对象 3.更新对象 4.保存更新对象 结语 操作数据概述 我们常常所说的一个工作单元,通常是执行1个或多个操作,对这些操作要么提交要么放弃/回滚.想想使用 ...

  6. selenium-webdriver的等待方法

    Wait commands in WebDriver Listing out the different WebDriver Wait statements that can be useful fo ...

  7. Parallels Desktop 7用bootcamp安装win7 后如何激活WIN7

    在parallels的选项中,在硬件选项卡的引导标记中添加:kernel.waet.enable=0 ,重新启动win7即可激活.

  8. 美工代码注意事项(html+div+css+js)

    window.location.href的target控制 在使用框架时,经常会对框架子页面进行页面引导的情况,如果只是简单的设置location. href="",会使得整个页面 ...

  9. 2008---2009学年(A)B)第1学期《中国近代史纲要》课程考核试卷

    湖南人文科技学院公共课 2008---2009学年第1学期<中国近代史纲要>课程考核试卷(A) 考核方式: (闭卷)                                     ...

  10. usaco 购买饲料 && 修剪草坪

    购买饲料 Description 如约翰在镇上,沿着公路开车回家,他的家离起点有E公里.他顺便准备买K吨饲料回家.运送饲料是要花油钱的,如果他的车上有X吨饲料,行驶一公里需要X^2元,行驶D公里就 需 ...