一、webservice介绍
1.WebService是一种跨编程语言和跨操作系统平台的远程调用技术
譬如,银联提供给商场的pos刷卡系统,商场的POS机转账调用的转账方法的代码其实是跑在银行服务器上。再比如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率,往大的概念上吹,就是所谓的SOA应用。
2. XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术。
XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。WebService平台就是用XSD来作为其数据类型系统的。当你用某种语言(如VB.NET或C#)来构造一个Web service时,为了符合WebService标准,所有你使用的数据类型都必须被转换为XSD类型。
WSDL: 好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。
WebService也一样,WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个URL地址表示,服务通过什么方式来调用。
1.WebService是一种跨编程语言和跨操作系统平台的远程调用技术
譬如,银联提供给商场的pos刷卡系统,商场的POS机转账调用的转账方法的代码其实是跑在银行服务器上。再比如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率,往大的概念上吹,就是所谓的SOA应用。
2. XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术。
XML+XSD:WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的返回结果是什么)。
XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。WebService平台就是用XSD来作为其数据类型系统的。当你用某种语言(如VB.NET或C#)来构造一个Web service时,为了符合WebService标准,所有你使用的数据类型都必须被转换为XSD类型。
SOAP: WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。
SOAP协议 = HTTP协议 + XML数据格式
WSDL: 好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。
WebService也一样,WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个URL地址表示,服务通过什么方式来调用。
WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。WSDL文件保存在Web服务器上,通过一个URL地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到uddi服务器,以便被人查找;2.直接告诉给客户端调用者。
二、创建服务端 1、创建【Web Service Project】,命名为【TheService】。 2、创建【Class】类,命名为【ServiceHello】,位于【com.fy.service】包下。 3、编写供客户端调用的方法,即编译方法代码。 package com.fy.service;a import javax.jws.WebService; import javax.xml.ws.Endpoint; import com.sun.org.apache.bcel.internal.generic.NEW; @WebService public class ServiceHello { /* * 供客户端调用的方法 * */ public String getValue(String name){ return "我叫:" +name; } public static void main(String[] args) { // Todo Auto-generated method stub Endpoint.publish("http://localhost:9001/Service/ServiceHello.java",new ServiceHello()); System.out.println("service success!"); } } 4、进行编译 说明:编译失败的话,请将该项目引用的jdk设置为1.6.0_17版本或更高版本 5、测试结果 测试地址:http://localhost:9001/Service/ServiceHello?wsdl 三、生成客户端 1、创建【Web Service Project】,命名为【TheClient】。 2、命令提示窗口执行生成命令。 格式:wsimport -s "src目录" -p “生成类所在包名” -keep “wsdl发布地址” 示例: wsimport -s E:\\Workspaces\\workSpaceBaseSe1.6\\TheClient\\src -p com.fy.client -keep http://localhost:9001/Service/ServiceHello.java?wsdl 说明: 1)"src目录"地址不可含空格 2)“wsdl发布地址”不要漏了“?wsdl” 3)不是内部命令是因为JDK和JRE的环境没有配置 3、刷新项目,检查生成类 四、最终测试 1、创建【Class】类,命名为【ServiceTest】,位于【com.fy.test】包下。 2、编写测试方法,调用服务端方法,并打印返回的结果。 package com.fy.client; public class ServiceTest { /** * @param args */ public static void main(String[] args) { // Todo Auto-generated method stub //初始化对象 ServiceHello hello = new ServiceHelloService().getServiceHelloPort(); //调用方法 String name = hello.getValue("fyyyy"); //打印返回的结果 System.out.println(name); } }版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。