• 3、Web Service-Jaxws(Eclipse版本)


    1、概述

    开发手段:

      使用jdk开发(1.6及以上的版本)

      使用CXF框架开发

    组成:

      -服务器端

      -客户端

    2、使用JDK开发

    1)、服务器端

    -@WebService(SEI和SEI的实现类)

    -@WebMethod(SEI中的所有方法)

    2)、客户端

    使用eclipse提供的web service浏览器访问

    -查看对应的wsdl文档

    -请求webservice病查看请求和响应的信息

    创建客户端应用编码方式访问:

    -借助jdk的wsimort.exe工具生成客户端代码:

          wsimport -keep url

    -借助生成的代码写请求编码

    3、服务器端的代码实现:

    1、工程的目录结构如下:

    2、类:

    HelloService.java 
    package com.cr.service;
    
    import javax.jws.WebMethod;
    import javax.jws.WebService;
    
    @WebService
    public interface HelloService { 
        @WebMethod
        public String sayHello(String name);
    }
    HelloServiceImpl.java 
    package com.cr.service.impl;
    
    import javax.jws.WebService;
    import com.cr.service.HelloService;
    
    @WebService
    public class HelloServiceImpl implements HelloService{
    
        @Override
        public String sayHello(String name) {
            System.out.println("webservice sercer...");
            System.out.println("name:" + name );
            return "hello:"+name;
        }
    
    
    }

     server.java 

    package com.cr.server;
    
    import javax.xml.ws.Endpoint;
    
    import com.cr.service.impl.HelloServiceImpl;
    
    //发布service
    public class server {  
          public static void main(String[] args){   
            String address = "http://localhost:8081/webserviceserver/helloService";
            Endpoint.publish(address , new HelloServiceImpl());
            System.out.println("发布成功....");
        }
    }

     此时运行,项目会在后台运行,并且不是以往的瞬间关闭!

     

    使用浏览器查看wsdl文档:

    http://localhost:8081/webserviceserver/helloService?wsdl

     使用Eclipse自带的web service浏览器进行测试:

     使用其进行测试:

    查看服务器端的打印情况:

     4、客户端的 实现

     1、此时新建的客户端如下:

     2、使用命令进行生成客户端的代码

     

    先进入带工程的src路径下

     

    执行命令:

    wsimport -keep http://localhost:8081/webserviceserver/helloService?wsdl

     

    3、进入工程进行刷新包

    4、写实现的方法:

    client.java

    package com.cr.service.client;
    
    import com.cr.service.impl.HelloServiceImpl;
    import com.cr.service.impl.HelloServiceImplService;
    
    public class client {
        
        public static void main(String[] args) {
            
            HelloServiceImplService factory = new HelloServiceImplService();
            
            HelloServiceImpl helloWs = factory.getHelloServiceImplPort();
            
            System.out.println(helloWs);
            
            System.out.println(helloWs.getClass());
            
            String res = helloWs.sayHello("java");
            System.out.println("res:" + res);
            
        }
    
    }

     结果:

    使用代理的方式

    JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e: Stub for http://localhost:8081/webserviceserver/helloService
    class com.sun.proxy.$Proxy32
    res:hello:java

     还可以使用Eclipse自带的Web Service浏览器进行相关的测试:

    5、使用Ec自带的TCP/IP工具进行监听请求(端口转发

    1、将服务端的WSDL文档保存到本地

    2、修改文档的端口: 8081端口改为8082

      wsdl文件

      

       新建一个工程

      

      wsdl保存在本地的文件

       

       

    3、根据本地的wsdl生成客户端的代码,并且写客户端的调用代码

      

    4、配置eclipsedeTCP/IP,启动监听  

      

       

    5‘编写客户端的测试u代码“

    client.java 
    package com.cr.service.client;
    import com.cr.service.impl.HelloServiceImpl;
    import com.cr.service.impl.HelloServiceImplService;
    
    public class client {
        public static void main(String[] args) {
            
            HelloServiceImplService factory = new HelloServiceImplService();
            
            HelloServiceImpl helloWs = factory.getHelloServiceImplPort();
            
            System.out.println(helloWs);
            
            System.out.println(helloWs.getClass());
            
            String res = helloWs.sayHello("java");
            System.out.println("res2:" + res);
        }
    }

     启动测试:

    JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e: Stub for http://localhost:8082/webserviceserver/helloService
    class com.sun.proxy.$Proxy32
    res2:hello:java

    6、执行客户端代码发送service请求监听得到:

    请求体的代码:

    <?xml version="1.0" ?>
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
      <S:Body>
        <ns2:sayHello xmlns:ns2="http://impl.service.cr.com/">
          <arg0>java</arg0>
        </ns2:sayHello>
      </S:Body>
    </S:Envelope>

     响应体的代码:

    <?xml version="1.0" ?>
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body><
      ns2:sayHelloResponse xmlns:ns2="http://impl.service.cr.com/">
        <return>hello:java</return>
      </ns2:sayHelloResponse>
    </S:Body></S:Envelope>

     基于soap协议传输

  • 相关阅读:
    spring整合mybatis的事物管理配置
    平庸久了,是会上瘾的
    kafka基本概念
    JMS编程模型
    aop的基本概念
    事务的隔离级别和传播行为
    IntelliJ IDEA 导入Project
    [PowerShell]列出檔案與資料夾的資訊
    [powershell]统计目录大小
    [powershell]有关IP的设置
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10562458.html
Copyright © 2020-2023  润新知