zoukankan      html  css  js  c++  java
  • http WebService <一>

             一直在接触WebService 推送这块,今天记下来,以便后续查看

    1,什么是WebService?

      1),简单理解基于web的远程调用,主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。

      2),Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

    2,WebService优点以及什么情况下使用

         1),Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。

          注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,

        这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
        
             wsdl跟java一样,也是一种语言,是通过xml的形式说明该webservice如何调用。
     
      2),只要有调用的接口声明(WSDL),就可在程序中实现调用. 在异构系统间尤其有优势
     
      3),只要数据交换就可考虑. 比如说需要和其他第三方做接口,分享数据,异构系统远程调用等. 不过一次性大数据交换使用web service的效率不太高.
     
    3,使用WebService范例<基于 SOAP >
      1,创建WebService服务端
        先编写一个 Web Service 的接口:
    import javax.jws.WebService;  
    import javax.jws.WebMethod;  
    import javax.jws.soap.SOAPBinding;  
    import javax.jws.soap.SOAPBinding.Style;  
    @WebService  
    @SOAPBinding(style=Style.RPC)  
    public interface TimeServer {  
        @WebMethod  
        String getTimeAsString();  
        @WebMethod  
        long getTimeAsElapsed();  
    }  

        再编写 Web Service 实现:

    import java.text.DateFormat;  
    import java.util.Date;  
    import javax.jws.WebService;  
    import javax.xml.ws.Endpoint;
    
    @WebService(endpointInterface = "myweb.service.TimeServer")  
    public class TimeServerImpl implements TimeServer {  
        /** 
         * 返回从1970年1月1日0点0时0分起的毫秒数 
         */  
        public long getTimeAsElapsed() {  
            return new Date().getTime();  
        }  
        /** 
         * 返回如“2009-12-21”格式的日期 
         */  
        public String getTimeAsString() {  
            Date date = new Date();  
            DateFormat df = DateFormat.getDateInstance();  
            return df.format(date);  
        }  
        public static void main(String[] args){  
            // 第一个参数是发布的URL  
            // 第二个参数是SIB(Service Implementation Bean)实现  
            Endpoint.publish("http://localhost:8083/myweb11", new TimeServerImpl()); //192.168.1.225
            System.out.println("---");
        }  
    }  

      最后启动 Web Service:

    import javax.xml.ws.Endpoint;  
    public class TimeServerPublisher {  
        public static void main(String[] args){  
            // 第一个参数是发布的URL  
            // 第二个参数是SIB(Service Implementation Bean)实现  
            Endpoint.publish("http://127.0.0.1:8080/mywebsss", new TimeServerImpl()); 
            System.out.println("---");
        }  
    }  

      网址打开

     2,WebService客户端

      使用wsimport -s E:workspaceWebsrc -p ht_service_test -keep http://127.0.0.1:8080/mywebsss?wsdl  生成客户端代码, 接下来直接调用服务端接口即可

          -s 生成所在路径

          -p 包名

          -keep   wsdl地址  <也可将wsdl保存到本地>

         
       ---参考了很多博客,https://www.cnblogs.com/mount/archive/2011/11/21/2256779.html
            blog.csdn.net/qq32933432/article/details/51394749
     
     
                              
                                                              记录点点滴滴,虽然微不足道。

     

     
     
  • 相关阅读:
    无忌缩略语及常用语词典
    大家都说不建议直接使用 @Async 注解?为什么??
    Comparable 和 Comparator 接口的区别?还傻傻分不清?
    Apache Log4j 漏洞影响有多大?Google 调查报告出炉!
    Logback 也爆雷了,惊爆了。。。
    Log4j 2.3.1 发布!又是什么鬼??
    Spring Boot 实现读写分离,还有谁不会??
    Spring Cloud 2020.0.5 发布,新特性一览,别掉队了!
    终于!Spring Boot 最新版发布,一招解决 Log4j2 核弹级漏洞!
    Log4j 2 杀不死 Java!
  • 原文地址:https://www.cnblogs.com/chenjle/p/8309810.html
Copyright © 2011-2022 走看看