• 基于wsdl2java訪问外来service服务


    一、wsdl2java介绍

    Wsdl2java是cxf提供的一个用于生成client代码的工具,它的功能跟wsimport差点儿相同。

    可是wsdl2java工具仅仅能生成訪问基于cxf公布的服务的代码。Wsdl2java位于cxf_home/bin文件夹下,因此使用这个工具时须要加入文件夹到path中。Wsdl2java工具的參数与wsimport有所不同。主要有:

    -d 參数,指定生成代码的文件夹

    -p 參数,指定生成的新的包结构

     (Wsdlurl) –http://server.port/service?wsdl,webservice的wsdl地址。必须的參数

    二、新建javaproject,并公布webservice

    新建java project,命名为HelloCXF,导入CXF相关的jar包。

    在src文件夹中新建com.hellocxf.service包,并新建People类,People类代码为:

    package com.hellocxf.service;
     
    import javax.jws.WebMethod;
    import javax.jws.WebService;
     
    @WebService
    public interface People {
             publicString sayHello(String name);
             //@WebMethod(exclude=true)
             publicString makeFriend(String name);
    }


    在src文件夹中新建com.hellocxf.serviceImpl包,并新建Student类。Student代码为:

    package com.hellocxf.serviceImpl;
     
    import javax.jws.WebMethod;
    import javax.jws.WebService;
     
    import com.hellocxf.service.People;
     
    @WebService
    public class Student implements People {
     
             @Override
             publicString sayHello(String name) {
                       //TODO Auto-generated method stub
                       System.out.println("Hello:"+name);
                       returnname;
             }
     
             @WebMethod(exclude=true)
             @Override
             publicString makeFriend(String name) {
                       //TODO Auto-generated method stub
                       System.out.println("makefriend with "+name+" student");
                       returnname;
             }
     
    }


    在src文件夹新建com.hellocxf.servicePublice包,并创建ServicePublish类。用于公布webservice.ServicePublish代码为:

    package com.hellocxf.servicePublish;
     
    import javax.xml.ws.Endpoint;
     
    import com.hellocxf.service.People;
    import com.hellocxf.serviceImpl.Student;
     
    public class ServicePublish {
     
             publicstatic void main(String[] args) {
                       //TODO Auto-generated method stub
                       PeoplemService = new Student();
                      
                       Stringaddress = "http://localhost:8080/People";
                       Endpoint.publish(address,mService);
             }
     
    }


    执行ServicePublish类,公布webservice服务。

    三、利用wsdl2java工具生成client调用服务代码

    在D盘新建目录generatedCode

    打开cmd命令。切换到该文件夹下

    执行wsdl2java –d . http://localhost:8080/People?wsdl,在generatedCode目录下生成訪问服务的代码。

    四、新建clientproject,调用webservice服务

    在eclipse中新建javaproject,命名为CXFClient

    将第三部生成的.java类文件总体拷贝到src文件夹下.

    在src文件夹下新建com.webservice.use包,在包中新建类ServiceUse.用于完毕对webservice的调用,代码为:

    package com.webservice.use;
     
    import com.hellocxf.serviceimpl.People;
    import com.hellocxf.serviceimpl.StudentService;
     
    public class ServiceUse {
     
             publicstatic void main(String[] args) {
                       //TODO Auto-generated method stub
                      
                       //<wsdl:servicename="StudentService">
                       StudentServicestudentService = new StudentService();
                      
                       //<wsdl:portbinding="tns:StudentServiceSoapBinding"name="StudentPort">
                       //<wsdl:bindingname="StudentServiceSoapBinding" type="ns1:People">
                       Peoplepeople = studentService.getStudentPort();
                      
                       StringserviceResult = people.sayHello("yinyuchun");
                       System.out.println(serviceResult);
                      
             }
     
    }
     


    类ServiceUse代码中创建的service类型和调用的port、方法都是从wsdl获取的。

  • 相关阅读:
    网络和笔记本
    病毒惹的祸
    Virtual MachineVmware(2)
    VS2010 工具箱装载出错
    Virtual Machine VmWare(1)
    javascript写计数器
    代码自动生成操作
    用live writer写博客
    上海招聘.net程序员
    将用户导入到membership
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6698733.html
Copyright © 2020-2023  润新知