• WebService学习


    一.jdk搭建WebService服务端

    1.定义接口

    import javax.jws.WebMethod;
    import javax.jws.WebService;

    @WebService//注解接口
    public interface WebServiceI {
      @WebMethod//注解方法
      String SayHello(String name);

      @WebMethod
      String save(String name,String age);
    }

    2.实现类

    package com.sinosoft.webservice.impl;

    import javax.jws.WebService;
    import com.sinosoft.webservice.Interface.WebServiceI;

    @WebService//注解实现类
    public class WebServiceImpl implements WebServiceI{

      @Override
      public String SayHello(String name) {
        System.out.println("WebService SayHello " + name);
        return "SayHello " + name;
      }

      @Override
      public String save(String name, String age) {
        System.out.println("WebService save " + name + ", " + age);
      return "save Success";
      }
    }

    3.发布方式:

    1)手动发布

        

    package com.sinosoft.webservice.test;

    import javax.xml.ws.Endpoint;
    import com.sinosoft.webservice.impl.WebServiceImpl;

    public class WebServicePublish {

      public static void main(String[] args) {

        String address = "http://localhost:8081/webservice";//访问地址
        Endpoint.publish(address, new WebServiceImpl());//发布
        System.out.println("发布WebSerivce成功!");
      }

    }

    2).放监听器里

      

    package com.sinosoft.webservice.test;

    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.annotation.WebListener;
    import javax.xml.ws.Endpoint;

    import com.sinosoft.webservice.impl.WebServiceImpl;
    @WebListener//监听器,初始化时即启动
    public class WebServicePublishListener implements ServletContextListener {

      @Override
      public void contextDestroyed(ServletContextEvent arg0) {
      }

      @Override
      public void contextInitialized(ServletContextEvent arg0) {
        String address = "http://10.46.104.166:8081/WS_Server/Webservice";
        Endpoint.publish(address, new WebServiceImpl());
        System.out.println("发布WebSerivce成功!");
      }

    }

    3).以servlet方式发布

      

    package com.sinosoft.webservice.test;

    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.xml.ws.Endpoint;

    import com.sinosoft.webservice.impl.WebServiceImpl;

    @WebServlet(value="",loadOnStartup=0)//loadOnStartup >= 0表示在容器加载时即启动
    public class WebServicePublishServlet extends HttpServlet{
       public void init(){
          String address = "http://10.46.104.166:8081/webservice";
          Endpoint.publish(address, new WebServiceImpl());
          System.out.println("发布WebSerivce成功!");
       }
    }

    二.搭建WebService客户端

    1.访问自己的WebService服务端

      新建java项目,获取到src所在路径,然后进入dos命令窗口,切换到src所在路径,然后命令行输入wsimport -keep XXX?wsdl  (xxx代表服务端的地址)

      成功后src下会出现一个包,里面有许多类,只需注意最后两个就行.

      新建测试类,

      

    package com.sinosoft.webservice.client;

    import com.sinosoft.webservice.impl.WebServiceImpl;
    import com.sinosoft.webservice.impl.WebServiceImplService;

    public class WSClient {
      public static void main(String[] args) {
        WebServiceImplService factory = new WebServiceImplService();//客户端连接类(上图的2)
        WebServiceImpl wsImpl = factory.getWebServiceImplPort();//接口(上图的1)
        String sayResult = wsImpl.sayHello("王尼玛");
        String saveResult = wsImpl.save("王尼玛", "18");
        System.out.println("调用WebService返回结果:" + sayResult);
        System.out.println("调用WebService返回结果:" + saveResult);
      }
    }

    运行结果:

      调用WebService返回结果:SayHello 王尼玛

      调用WebService返回结果:save Success

    2.调用他人的WebService接口(调用免费的天气预报WebService接口)

      天气预报WebService服务接口地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

      如果它的接口是java语言编写的,则依旧创建java项目,dos窗口下切换到src所在目录

      输入命令:wsimport -keep http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

      可本次天气预报的接口是.NET编写的所以需要有小小的调整

      浏览器输入http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

      另存为wsdl文件,然后用编辑器打开把其中所有的

      <s:element ref="s:schema"/>
      <s:any/>
      替换为<s:any minOccurs="2" maxOccurs="2"/>
      再进入dos窗口,切换到src目录下,输入命令: wsimport -keep wsdl所在路径
      src下依旧会生成一个包,里面许多类,只需注意最后两个
      
     
    然后测试类的编写

    package cn.com.test;

    import java.util.List;

    import cn.com.webxml.ArrayOfString;
    import cn.com.webxml.WeatherWebService;
    import cn.com.webxml.WeatherWebServiceSoap;

    public class WSClilent {

      public static void main(String[] args) {
        WeatherWebService wsService = new WeatherWebService();//连接类,上图1
        WeatherWebServiceSoap wsSoap = wsService.getWeatherWebServiceSoap();//接口,上图2
        ArrayOfString wsArray = wsSoap.getWeatherbyCityName("北京");
        List<String> wsList = wsArray.getString();
        for (String string : wsList) {
          System.out.println(string);
        }
      }

    }

    运行结果:

    直辖市
    北京
    54511
    54511.jpg
    2018/2/7 18:21:10
    -9℃/2℃
    2月7日 多云转晴
    北风4-5级转西南风小于3级
    1.gif
    0.gif
    今日天气实况:气温:0℃;风向/风力:西北风 2级;湿度:18%;紫外线强度:最弱。空气质量:良。
    紫外线指数:最弱,辐射弱,涂擦SPF8-12防晒护肤品。
    健臻·血糖指数:易波动,风力较大,血糖易波动,注意监测。
    感冒指数:易发,天冷风大,易感冒,注意防护。
    穿衣指数:冷,建议着棉衣加羊毛衫等冬季服装。
    洗车指数:较不宜,风力较大,洗车后会蒙上灰尘。
    空气污染指数:良,气象条件有利于空气污染物扩散。

    -7℃/3℃
    2月8日 晴转多云
    南风3-4级转北风小于3级
    0.gif
    1.gif
    -9℃/5℃
    2月9日 多云
    西北风4-5级转3-4级
    1.gif
    1.gif
    北京位于华北平原西北边缘,市中心位于北纬39度,东经116度,四周被河北省围着,东南和天津市相接。全市面积一万六千多平方公里,辖12区6县,人口1100余万。北京为暖温带半湿润大陆性季风气候,夏季炎热多雨,冬季寒冷干燥,春、秋短促,年平均气温10-12摄氏度。北京是世界历史文化名城和古都之一。早在七十万年前,北京周口店地区就出现了原始人群部落“北京人”。而北京建城也已有两千多年的历史,最初见于记载的名字为“蓟”。公元前1045年北京成为蓟、燕等诸侯国的都城;公元前221年秦始皇统一中国以来,北京一直是中国北方重镇和地方中心;自公元938年以来,北京又先后成为辽陪都、金上都、元大都、明清国都。1949年10月1日正式定为中华人民共和国首都。北京具有丰富的旅游资源,对外开放的旅游景点达200多处,有世界上最大的皇宫紫禁城、祭天神庙天坛、皇家花园北海、皇家园林颐和园,还有八达岭、慕田峪、司马台长城以及世界上最大的四合院恭王府等各胜古迹。全市共有文物古迹7309项,其中国家文物保护单位42个,市级文物保护单位222个。北京的市树为国槐和侧柏,市花为月季和菊花。另外,北京出产的象牙雕刻、玉器雕刻、景泰蓝、地毯等传统手工艺品驰誉世界。

  • 相关阅读:
    【转】HTML CANVAS
    【转】JY 博客
    【转发】如何使用NPM?CNPM又是什么?
    【转廖大神】package.json 包安装
    【转】Socket接收字节缓冲区
    C# 串口操作系列(5)--通讯库雏形
    C# 串口操作系列(3) -- 协议篇,二进制协议数据解析
    C# 串口操作系列(4) -- 协议篇,文本协议数据解析
    .netCore微服务使用Nginx集中式管理实现
    nginx代理访问及上传文件异常413 Request Entity Too Large
  • 原文地址:https://www.cnblogs.com/goujh/p/8430864.html
Copyright © 2020-2023  润新知