初识Web 服务(即Web Service)

一、什么是Web服务

    简单来说就是在Internet上提供的这种服务,我们称这种服务为Web服务。

二、Web服务的主要目标?

    是支持跨平台的可互操作性。

三、Web服务的优势

初识Web 服务(即Web Service)

四、Web服务提供了一系列标准,定义了应用在Web上机进行互操作的规范,因此,Web服务的3个核心操作都是基于这些规范完成的。

    三要素:

      WSDL:WebService Description Language ---Web服务描述语言。

        通过xml形式说明服务在什么地方----地址。

        通过xml形式说明服务提供什么样的方法---如何调用。

      SOAP:Simple Object Access Protocol 简单对象访问协议

         SOAP作为一个基于XML语言的协议用于网上传输数据

         SOAP=HTTP基础+XML数据。

      UDDI: Universal  Description   Discovery  and  Integration统一描述发现和集称协议。

五、使用JAX-WS发布服务

    要发布一个Web服务供第三方使用,我们通过JAX-WS来完成实现查看天气。

1、定义一个实体

package cn.yxj.publishEntity;

import java.util.Date;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="TemperatureInfo")
public class TemperatureInfo {
    
    
    public TemperatureInfo() {
    }
    public TemperatureInfo(String city, Date date, int min, int max,
            int average, String desc) {
        this.city = city;
        this.date = date;
        this.min = min;
        this.max = max;
        this.average = average;
        this.desc = desc;
    }
    private String city;//城市
    private Date date;//日期
    private int min;//最低温度
    private int max;//最高温度
    private int average;//平均温度
    private String desc;//描述
    
    
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public int getMin() {
        return min;
    }
    public void setMin(int min) {
        this.min = min;
    }
    public int getMax() {
        return max;
    }
    public void setMax(int max) {
        this.max = max;
    }
    public int getAverage() {
        return average;
    }
    public void setAverage(int average) {
        this.average = average;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
}

2、设计并实现服务接口。

    

package cn.yxj.publish;
import java.util.Date;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebService;
import cn.yxj.publishEntity.TemperatureInfo;

/**
 * 发布的天气接口
 * @author 
 *
 */
@WebService(targetNamespace="http://www.bdqn.cn/ws/weather")
public interface WeatherService {
    @WebMethod
   List<TemperatureInfo> getWeathers(String city,List<Date> dates);
}

3、定义一个实现类来实现接口

package cn.yxj.publish.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebService;
import cn.yxj.publish.WeatherService;
import cn.yxj.publishEntity.TemperatureInfo;
    @WebService(targetNamespace="http://www.bdqn.cn/ws/weather")
    public class WeatherServiceImpl implements WeatherService{
        @WebMethod
        public List<TemperatureInfo> getWeathers(String city, List<Date> dates) {
            List<TemperatureInfo> list=new ArrayList<TemperatureInfo>();
            for (Date date : dates) {
                list.add(getTemperature(city, date));
            }
            return list;
        }
        
        @WebMethod(exclude=true)
        public TemperatureInfo getTemperature(String city,Date date){
            return new TemperatureInfo(city,date,28,33,31,"");
        }

    }

4、发布天气的服务

package cn.yxj.server;



import javax.xml.ws.Endpoint;

import cn.yxj.publish.impl.WeatherServiceImpl;
public class Server {
    protected Server() throws Exception{
        System.out.println("启动服务....");
        //定义服务实现类
        WeatherServiceImpl weatherServiceImpl=new WeatherServiceImpl();
        //定义服务发布网址
        /*String address="http://localhost:8084/WeatherService";*/
        String address="http://192.168.15.40:8084/WeatherService";//让别人访问自己的web
        //发布服务
        Endpoint.publish(address, weatherServiceImpl);
    }

    public static void main(String[] args) throws Exception {
        new Server();
        System.out.println("服务准备就绪......");
        Thread.sleep(5*60*1000);
        System.out.println("服务退出......");
        System.exit(0);//关闭服务器
        //System.out.println(http://localhost:8084/WeatherService?xsd=1);
    }
}

      简单的列子带大家配置Web Service 的服务。