WebService学习笔记系列(一)
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学习笔记系列(一)的更多相关文章
- WebService学习笔记系列(二)
soap(简单对象访问协议),它是在http基础之上传递xml格式数据的协议.soap协议分为两个版本,soap1.1和soap1.2. 在学习webservice时我们有一个必备工具叫做tcpmon ...
- WebService学习笔记系列(四)
今天主要来看看服务端的编写及发布. 服务端的编写主要包括三个步骤: 1.编写一个接口,即SEI(server endpoint interface) 2.编写接口的实现类,即SIB (server i ...
- WebService学习笔记系列(三)
网上有一些提供webservice服务的网站,我们要怎么调用呢? 今天来看个如何调用手机归属地查询服务.这个网站上提供了许多webservice服务,其中包括手机归属地查询服务,我们今天就用wsimp ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- Dynamic CRM 2013学习笔记 系列汇总
这里列出所有 Dynamic CRM 2013学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址: Dynamic CRM 2013学习笔记 系列汇总 ...
- SQLServer学习笔记系列3
一.写在前面的话 今天又是双休啦!生活依然再继续,当你停下来的时候,或许会突然显得不自在.有时候,看到一种东西,你会发现原来在这个社会上,优秀的人很多,默默 吃苦努力奋斗的人也多!星期五早上按时上班, ...
- SQLServer学习笔记系列2
一.写在前面的话 继上一次SQLServer学习笔记系列1http://www.cnblogs.com/liupeng61624/p/4354983.html以后,继续学习Sqlserver,一步一步 ...
- Dynamic CRM 2015学习笔记 系列汇总
这里列出所有 Dynamic CRM 2015学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址:Dynamic CRM 2015学习笔记 系列汇总 一 ...
- 步步为营 SharePoint 开发学习笔记系列总结
转:http://www.cnblogs.com/springyangwc/archive/2011/08/03/2126763.html 概要 为时20多天的sharepoint开发学习笔记系列终于 ...
随机推荐
- TIPSO--基于JQUERY的消息提示框插件,用起来蛮顺手
项目产品经理要求, 呵呵,关于描述,十个字以内的,直接显示,多于十个字的,用消息框提示: 相关模板及JS如下: $(function() { $('.tip').tipso({ useTitle: f ...
- cisco上的RIP V2加上MD5认证配置测试成功
R1: Router#show run Building configuration... Current configuration : bytes ! version 12.3 service t ...
- 杂烩:QWidget、QGraphics、QtQuick
一说起Qt 大都会想起Qt的GUI编程,具体到某个类的话,最多的就是QWidget类及其子类了. 其实Qt中还有基于项的图形视图,具体来说QGraphicsView,QGraphicsScene,QG ...
- hdu4435 charge-station(先建后拆+bfs)
charge-station Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- 使用 Puppet 在 Windows Azure 中配备 Linux 和 Windows 环境
发布于 2013-12-11 作者 Ross Gardler 微软开放技术有限公司 (MS Open Tech) 很高兴地宣布发行新的 Windows Azure Puppet 模块.通过这个模 ...
- js数组如何去掉逗号
技术水平比较差,有错误的地方或者大神们有好的方法在介绍下,可以指点出来我加以改正! 1.join去掉逗号',' var a = ['1', '2', '3', '4', '5']; var c = a ...
- Linux内核学习笔记1——系统调用原理【转】
1什么是系统调用 系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口.用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文 ...
- Java新手入门必须掌握的30个基本概念
今天给大家推荐的文章是有关Java基本概念的,掌握好这些基本概念对学习J2SE.J2EE.J2ME都很重要,也能更好地理解Java的精髓,初学者要注意啦! ▶Java概述: 目前Java主要应用于中间 ...
- AIX项目总结_oracle_sqlloader_01
近来一直在忙AIX的移行项目,但也因自己小小偷懒,所以到现在才开始记录.接下来,言归正传. 这个项目中,学习中了shell相关知识,从基本的语法命令(定义变量.特殊变量使用.循环控制.方法调用等)到l ...
- MVC视图中ViewStart/RenderSection/Layout/Partial
1.母板页_Layout.cshtml 2.部分视图 3.默认Layout引用的使用(_ViewStart.cshtml) Layout = "~/Views/Shared/_Layout. ...