WebService入门详解

1、什么是WebService

先来考虑一个问题,如果我们要在自己的程序里面展示天气预报,那怎么弄?正确的做法是我们发送一个请求到一个系统,他会给我们返回来天气情况。这个就是一个WebService。天气预报系统就相当于webservice的服务端,我们的系统就相当于客户端。如http://www.webxml.com.cn这个网站上面就列举了多个WebService服务站点

2、JAVA中如何调用别人发布的webservice

2.1、什么是wsdl文档
wsdl跟Java一样,也是一种语言,是通过xml的形式说明该webservice如何调用。

2.2、如何获取wsdl文档
通过在webservice的url后面加?wsdl的方式,比如天气预报的的就是http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

2.3、WSDL解析
Wsdl文档从下往上读
Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。(入参和出参的数据类型)
Message - 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构(入参和出参)。
Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对(方法)。
PortType - 对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持(服务类)。
Binding - 特定服务访问点与具体服务类的绑定(不看内容,看关系)。
Port - 定义为webservice单个服务访问点。
Service- 相关服务访问点的集合。

3、如何发布一个webservice
3.1、发布webservice
——JDK1.6中JAX-WS规范定义了如何发布一个WebService服务;
(1)用jdk1.6.0_21以后的版本发布;
(2)与Web服务相关的类,都位于Javax.jws.*包中
@WebService——此注解用在类上指定将此类发布成一个WebService;
EndPoint——此类为端点服务类,其中publish()方法用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上,用于发布。
(3)注:
类上添加注解@WebService,类中所有非静态方法都会被发布;
静态方法和final方法不能被发布;
方法上加@WebMentod(exclude=true)后,此方法不被发布;

3.2、HelloWebService例子

package cn.tgb.ws;  
import javax.jws.WebMethod;  
import javax.jws.WebService;  
import javax.xml.ws.Endpoint;  
/** 
 *  @WebService - 它是一个注解,用在类上指定将此类发布成一个ws. 
    Endpoint – 此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上。 
 * 
 */  
@WebService  
public class HelloWebService {  

    public String HelloWord(String name){  
        return"Hello: "+name;  
    }  

    /** 
     *添加exclude=true后,HelloWord2()方法不会被发布 
     * @param name 
     * @return 
     */  
    @WebMethod(exclude=true)  
    public String HelloWord2(String name){  
        return"Hello: "+name;  
    }  

    public static void main(String[] args) {  
     /** 
     *参数1:服务的发布地址 
     *参数2:服务的实现者 
     */  
        Endpoint.publish("http://192.168.24.138:456/helloWord",new HelloWebService());  

    }  
}

3.3、查看wsdl
地址:http://192.168.24.138:456/helloWord?wsdl
只要在客户端浏览器能看到此WSDL文档,说明服务发布成功
这里写图片描述
以上服务发布成功;

3.4、客户端访问发布的服务
根据WSDL文档来在客户端编写代码,访问发布的服务;
但是,WSDL文档看不懂怎么办?代码该如何编写?
——你看不懂,JDK看得懂,wsimport是JDK自带的,可以根据WSDL文档生成客户端调用代码的工具。无论服务器端WebService使用什么语言编写的,豆浆在客户端生成Java代码。所以服务器用什么语言编写的并不重要。
wsimport.exe命令参数熟知:
-d:生成class文件。默认参数。
-s:生成Java文件
-p:自定义包结构
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值