zoukankan      html  css  js  c++  java
  • 初识Web 服务(即Web Service)

    一、什么是Web服务

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

    二、Web服务的主要目标?

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

    三、Web服务的优势

    四、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 的服务。

  • 相关阅读:
    [2019南昌邀请赛网络赛D][dp]
    [ Educational Codeforces Round 65 (Rated for Div. 2)][二分]
    [hdoj5927][dfs]
    [cf1140D. Minimum Triangulation][dp]
    [hdoj6483][莫队+线段树/ST]
    使用GAC加速 解决CSP问题 Kakuro
    UVA 11427 Expect the Expected
    UVA 11021 Tribles
    UVA 11174 Stand in a Line 树上计数
    《算法概论》第八章的一些课后题目 关于NP-Complete Problem
  • 原文地址:https://www.cnblogs.com/yejiaojiao/p/6037571.html
Copyright © 2011-2022 走看看