CXF 2.0 学习笔记-二(客户端)

CXF 2.0 学习笔记-2(客户端)

 CXF 2.0 学习笔记-1(服务端)  中生成了服务端,现在把服务端的wsdl保存到本地(直接把Http://xxx/ws/xxx?wsdl 另存为wsdl文件) 。
   我们要根据服务端的wsdl来生成客户端调用的文件,这样需要用到CXF BIN目录下wsdl2java.bat 。
   wsdl2java 参数如下:

CXF 2.0 学习笔记-二(客户端)wsdl2java -fe <frontend name>* -db <data binding name>* -wv <[wsdl version]>
CXF 2.0 学习笔记-二(客户端)-p <[wsdl namespace =]Package Name>* -sn <service-name> -b <binding-name>
CXF 2.0 学习笔记-二(客户端)-catalog <catalog-file-name> -d <output-directory> -compile 
CXF 2.0 学习笔记-二(客户端)-classdir <compile-classes-directory> -impl -server -client -all 
CXF 2.0 学习笔记-二(客户端)-autoNameResolution -defaultValues<=class name for DefaultValueProvider> -ant 
CXF 2.0 学习笔记-二(客户端)-nexclude <schema namespace [= java packagename]>*  -exsh <(true, false)>
CXF 2.0 学习笔记-二(客户端)-dns <(true, false)> -dex <(true, false)> -validate -keep 
CXF 2.0 学习笔记-二(客户端)-wsdlLocation <wsdlLocation attribute> -xjc<xjc arguments> -noAddressBinding -h 
CXF 2.0 学习笔记-二(客户端)-v -verbose -quiet <wsdlurl>
CXF 2.0 学习笔记-二(客户端)



  我们在命令行下输入:wsdl2java -p hs.cxf.client  HelloWorld.wsdl 来指定生成的客户端包目录。

 客户端调用代码

CXF 2.0 学习笔记-二(客户端)try {
CXF 2.0 学习笔记-二(客户端)            JaxWsProxyFactoryBean  factory = new JaxWsProxyFactoryBean (); 
CXF 2.0 学习笔记-二(客户端)            factory.setServiceClass(WebServiceSample.class);
CXF 2.0 学习笔记-二(客户端)            factory.setAddress("http://127.0.0.1:9080/cxfTest/ws/HelloWorld");
CXF 2.0 学习笔记-二(客户端)            Object obj = factory.create();
CXF 2.0 学习笔记-二(客户端)            System.out.println(obj == null ? "NULL":obj.getClass().getName());
CXF 2.0 学习笔记-二(客户端)            if(obj != null){
CXF 2.0 学习笔记-二(客户端)                WebServiceSample ws = (WebServiceSample)obj;
CXF 2.0 学习笔记-二(客户端)                String str = ws.say("test");
CXF 2.0 学习笔记-二(客户端)                System.out.println(str);
CXF 2.0 学习笔记-二(客户端)                
CXF 2.0 学习笔记-二(客户端)                str = ws.say("1111");
CXF 2.0 学习笔记-二(客户端)                System.out.println(str);
CXF 2.0 学习笔记-二(客户端)                
CXF 2.0 学习笔记-二(客户端)                User u = new User();
CXF 2.0 学习笔记-二(客户端)                JAXBElement <String> je = 
CXF 2.0 学习笔记-二(客户端)                    new JAXBElement <String>(
CXF 2.0 学习笔记-二(客户端)                            new QName("http://bean.cxf.hs","name"),
CXF 2.0 学习笔记-二(客户端)                            String.class,"张三"); 
CXF 2.0 学习笔记-二(客户端)                u.setName(je);
CXF 2.0 学习笔记-二(客户端)                str = ws.sayUserName(u);
CXF 2.0 学习笔记-二(客户端)                System.out.println(str);
CXF 2.0 学习笔记-二(客户端)                
CXF 2.0 学习笔记-二(客户端)                //通过对象来交互
CXF 2.0 学习笔记-二(客户端)
                ReqBean req = new ReqBean();
CXF 2.0 学习笔记-二(客户端)                req.setExp(new JAXBElement <String>(
CXF 2.0 学习笔记-二(客户端)                            new QName("http://bean.cxf.hs","exp"),
CXF 2.0 学习笔记-二(客户端)                            String.class,"<exp>111<exp>"));
CXF 2.0 学习笔记-二(客户端)                req.setSeqId(new JAXBElement <String>(
CXF 2.0 学习笔记-二(客户端)                        new QName("http://bean.cxf.hs","seqId"),
CXF 2.0 学习笔记-二(客户端)                        String.class,"12345678"));
CXF 2.0 学习笔记-二(客户端)                RespBean resp = ws.action(req);
CXF 2.0 学习笔记-二(客户端)                System.out.println("resp_id:"+resp.getRespId().getValue());
CXF 2.0 学习笔记-二(客户端)                System.out.println("resp_exp:"+resp.getExp().getValue());
CXF 2.0 学习笔记-二(客户端)            }

CXF 2.0 学习笔记-二(客户端)        }
 catch (Exception ex) {
CXF 2.0 学习笔记-二(客户端)            ex.printStackTrace();
CXF 2.0 学习笔记-二(客户端)        }


运行此代码,查看结果即可

依赖包如下:

CXF 2.0 学习笔记-二(客户端)cxf-2.1.4.jar
CXF 2.0 学习笔记-二(客户端)jaxb-api-2.1.jar
CXF 2.0 学习笔记-二(客户端)geronimo-annotation_1.0_spec-1.1.1.jar
CXF 2.0 学习笔记-二(客户端)geronimo-ws-metadata_2.0_spec-1.1.2.jar
CXF 2.0 学习笔记-二(客户端)jaxws-api.jar
CXF 2.0 学习笔记-二(客户端)stax-api-1.0-2.jar
CXF 2.0 学习笔记-二(客户端)jaxb-impl-2.1.9.jar
CXF 2.0 学习笔记-二(客户端)geronimo-activation_1.1_spec-1.0.2.jar
CXF 2.0 学习笔记-二(客户端)xml-resolver-1.2.jar
CXF 2.0 学习笔记-二(客户端)XmlSchema-1.4.3.jar
CXF 2.0 学习笔记-二(客户端)wsdl4j-1.6.2.jar
CXF 2.0 学习笔记-二(客户端)saaj-api-1.3.jar
CXF 2.0 学习笔记-二(客户端)jsr173_1.0_ri.jar

其中jsr从bean下载:http://ftpna2.bea.com/pub/downloads/jsr173.jar (注意解压)