Webservice、WSDL三种服务访问的方式【转】
http://www.cnblogs.com/yongfeng/archive/2013/01/30/2883146.html
用soapUI试了下wsdl的测试,但还是不知道webService和WSDL的具体对应意义,找了篇文档了解下,原url见上。
一 WebService
WebService是使应用程序以与平台和编程语言无关的方式进行相互通信技术,比如:站点提供访问的数据接口:新浪微博,淘宝等。
官方定义:它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。WebService是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问WebService,通过WebService内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他WebService应用程序可以发现并调用它部署的服务。
它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用.
1:从WebService的工作模式上理解的话,它跟普通的Web程序(比如ASP、JSP等)并没有本质的区别,都是基于HTTP传输协议的程序。
2:WebService所使用的数据均是基于XML格式的。目前标准的WebService在数据格式上主要采用SOAP协议。
SOAP(Simple Object Access Protocol):简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的轻量级协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一种语言相互通信。
WSDL:Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。为用户提供详细的接口说明书。即外部对于WebService的调用方式。
Webservice和WebProject的区别:
1 web service 是可以做接口访问其他web service的。打个比方你打开360上面会有天气预报,那就是webservce,360网站调用中国气象网站的数据接口获得数据的,是两个不同系统之间的相互调用。http://www.webxml.com.cn/WebServices/WeatherWebService.asmx。webService需要发布后才能被其他工程或者web服务调用。
2 web project,就是一个web应用,你自己做的网站就是一个web project,如果你想在你的网站里加入一些其他内容(例如天气预报,邮编查询,手机号码归属地查询等等),那就要调用其他网站的接口了,那就是web service。
二 WSDL元素
wsdl元素是基于XML语法描述了与服务进行交互的基本元素
Type(消息类型):数据类型定义的容器,它使用某种类型系统
Message(消息):通信数据的抽象类型化定义,它由一个或者多个part组成
Part:消息参数
Opretation(操作):对服务所支持的操作进行抽象描述,WSDL定义了四种操作:
- 单向(one-way):端点接受信息;
- 请求-响应(request-response):端点接受消息,然后发送相关消息;
- 要求-响应(solicit-response):端点发送消息,然后接受相关消息;
- 通知(notification):端点发送消息。
Port Type (端口类型):特定端口类型的具体协议和数据格式规范。
Binding:特定端口类型的具体协议和数据格式规范
Port :定义为绑定和网络地址组合的单个端点。
Service:相关端口的集合,包括其关联的接口、操作、消息等。
三 如何写一个WebService,生成WSDL地址
1 建立一个普通的web项目,如:Trans
前面的话:当两个人碰面,产生了好感,如果需要得到双方的信息,双方交流必不可少,应用程序也是如此。各个应用程序之间的交流就需要WebService来作为相互交流的桥梁。
项目目的:程序A调用程序B中的方法C
1> 建立一个项目名为Trans
① 建立一个方法,e.g. com.shu.function.Function类:
@WebService
public class Function {
//该方法就是要暴露给其他应用程序调用的方法
public String transWords(String words) {
String res = "";
for(char ch :words.toCharArray()){
res+="\t"+ch+"\t";
}
return res;
}
public static void main(String[] args) {
Endpoint.publish("http://localhost:9001/Service/Function", new Function());
System.out.println("Publish Success");
}
② 执行程序,控制台打印出"Publish Success",说明消息发布成功。需确认点:a 需要jdk1.6+,b 端口未被占用。在浏览器输入:
http://localhost:9001/Service/Function?wsdl即可看到详细信息
③此时即可使用soapUI进行测试,界面如下
2 建立另外一个项目:GiveMeWords
①打开cmd,执行命令:wsimport -s src的路径 -p 完整包名 -keep webservice的发布地址,回车即可。如
wsimport -s D:\\opt\\GiveMeWords\\src -p com.shu.function -keep http://localhost:9001/Service/Function
如果失败,在发布地址后面加上 ?wsdl
如果wsimport命令执行失败,检查是否把jdk配置入环境变量
成功标志:parsing WSDL... generating code... compiling code...如下图
② 刷新GiveMeWords,项目在com.shu.service包下出现对应的WebService生成的文件
写main函数,调用即可~
public static void main(String[] args) {
Function function = new FunctionService().getFunctionPort();
String string = function.transWords("Let's Get Heck Out Of Here!");
System.out.println(string);
}
Webservice、WSDL三种服务访问的方式【转】的更多相关文章
- 浅淡Webservice、WSDL三种服务访问的方式(附案例)
Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...
- 九 三种Struts2访问Servlet方式总结
Servlet是单例的,Action是多例的. 多个程序访问Servlet只会创建一个Servlet对象,多个程序访问Action会创建对应的多个Action对象. 跳转页面可以获取对象的属性,说明使 ...
- Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress(转发)
原文 http://cloud.51cto.com/art/201804/570386.htm Kubernetes的三种外部访问方式:NodePort.LoadBalancer和Ingress 最近 ...
- 云计算的三种服务模式:SaaS/PaaS/IaaS
转载http://blog.chinaunix.net/uid-22414998-id-3141499.html 定义 云计算主要分为三种服务模式,而且这个三层的分法重要是从用户体验的角度出发的: S ...
- 云计算三种服务模式SaaS、PaaS和IaaS及其之间关系(顺带CaaS、MaaS)
云计算架构图 很明显,这五者之间主要的区别在于第一个单词,而aaS都是as-a-service(即服务)的意思,这五个模式都是近年来兴起的,且这五者都是云计算的落地产品,所以我们先来了解一下云计算是什 ...
- 三种Tomcat集群方式的优缺点分析
三种Tomcat集群方式的优缺点分析 2009-09-01 10:00 kit_lo kit_lo的博客 字号:T | T 本文对三种Tomcat集群方式的优缺点进行了分析.三种集群方式分别是:使用D ...
- 云计算的三种服务模式:IaaS,PaaS和SaaS
云服务”现在已经快成了一个家喻户晓的词了.如果你不知道PaaS, IaaS 和SaaS的区别,那么也没啥,因为很多人确实不知道. “云”其实是互联网的一个隐喻,“云计算”其实就是使用互联网来接入存储或 ...
- 云计算 --> 三种服务模式IaaS,PaaS,SaaS
三种服务模式IaaS,PaaS,SaaS “云”其实是互联网的一个隐喻,“云计算”其实就是使用互联网来接入存储或者运行在远程服务器端的应用,数据,或者服务.任何一个使用基于互联网的方法来计算,存储和开 ...
- 01:云计算三种服务模式SaaS、PaaS和IaaS
1.1 云计算 1.什么是云计算 1. 云计算服务是指将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务. 2. 用户通过网络以按需.易扩展的方式获得所需资源和服务(资源包括网 ...
随机推荐
- HTML元素大小和位置相对于谁的问题
一.如果元素的position属性值为absolute,那么此时分为两种情况: 1. 父级(包括直接父级和间接父级)元素中没有定义position属性(即默认属性static),那么该元素会参照页面, ...
- c++ deque 双端队列
双端队列: 函数 描述 c.assign(beg,end)c.assign(n,elem) 将[beg; end)区间中的数据赋值给c.将n个elem的拷贝赋值给c. c.at(idx) 传回索引 ...
- Extjs4 treePanel异步加载菜单(后台从数据库读取)
运行环境:springMVC+mybatis 一.建表 说明:0表示此节点为非叶子节点,即此节点还包括了子节点:1表示此节点为叶子节点,即此节点没有子节点.:关于图标iconCls是从Extjs的文件 ...
- @Autowired获取配置文件中被注入实例的两种方式
一.说明 二.那么在JavaBean中如何通过@Autowired获取该实例呢?有两种方式: 1.直接获取 @RunWith(SpringJUnit4ClassRunner.class) @Conte ...
- js获取fck值的代码方法
引入js文件 <script type="text/javascript" src="${basePath}/FCKeditor/fckeditor.js" ...
- python参考手册--第8章
1.模块和import (1)首次import module会做以下3件事: a)创建新的命名空间,用作在该源文件中定义的所有对象的容器.在模块中定义的函数和方法在使用global语句时将访问该命名空 ...
- HDU2697+DP
dp[i][j]:从前i个中挑出某些且cost不超过j的最大val. dp[i][j]:应该有1到i-1的dp[k][j-?]来更新!! /* DP dp[i][j]:从前i个中挑出某些且cost不超 ...
- [模拟]ZOJ3485 Identification Number
题意:给了一串15位或18位的身份证号码,求 在改变最少位数的情况下, 输出正确合法的身份证号 合法的身份证 是按照以下规则: 前6位以及“Order code”三位 一定合法 其中X是根据前17位 ...
- codeforces #309 div1 C
首先我们会发现所有的人构成了一个图 定义相爱为 在一个集合里 定义相恨为 不在一个集合里 很容易发现满足条件的图一定是一个二分图 那么分类讨论如下: 1.如果出现不合法 答案为0 2.如果不是一个二分 ...
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】07-基本数据类型
C语言有丰富的数据类型,因此它很适合用来编写数据库,如DB2.Oracle等大型数据库都是C语言写的.其中,提供了4种最常用的基本数据类型:char.int.float.double,使用这些数据类型 ...