下面是一个使用wsdl2java的例子:

C:\Users\Administrator>F:

F:\>cd misps2

F:\misps2>wsdl2java -d . http://10.10.31.25/MSPGWebPub/MSPGS/MPService.svc?wsdl

F:\misps2>




方法2:F:\phone>wsdl2java -d src -client http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

 

 

环境配置:

1、下载apache-cxf-2.6.2在环境变量中配置CXF_HOME ,在PATH中加入%CXF_HOME%\bin

2、输入cmd 进入控制窗口,输入wsdl2java看是否配置成功

3、参考它的文档看这个工具的具体参数的用法

wsdl2java用法:
 wsdl2java -p com -d src -all aa.wsdl
 -p 指定其wsdl的命名空间,也就是要生成代码的包名:
 -d 指定要产生代码所在目录
 -client 生成客户端测试web service的代码
 -server 生成服务器启动web service的代码
 -impl 生成web service的实现代码
 -ant 生成build.xml文件
 -all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file. 
 
wsdl2java -p QueryHrEmployee -d e:\ -all  http://10.70.158.127 :8080/axis2_14/services/QueryHrEmployee?wsdl

方法二:使用wsdl2java生成客户端

1、需要 一个包:apache-cxf-2.6.1.gz

这个包里有好多jar包,一定要下载下来。

将此包解压,我是放在:E:\CXF\apache-cxf-2.6.1

  

2、将URL调用成功的页面内容,另存为XML

    


3、在cmd中通过wsdl2java生成客户端文件


cd 进入apache-cxd-2.6.1\bin目录
 执行命名:
 wsdl2java -p service.webservice.client.demo -d F:\MyDocuments\Java\ws\InterfaceControlApp\src -verbose "F:\demoForWebSerivce.xml"
 解析
 wsdl2java -p 包名 -d 生成文件路径 -verbose "wsdl文件路径"
 然后再拷贝到项目里
 包名:文件存放的包名,可以写项目中包路径 
 生成文件路径 :文件存放路径,可以直接写项目路径
 wsdl文件:在IE中执行服务端URL显示的XML另存为XML文件。
 我是直接到项目路径了,生成前:

 生成后:

 报错处理:

 4、写MAIN调用
      package common;
 import javax.xml.ws.Service;
 import service.webservice.client.demo.DemoForWebService;
 import service.webservice.client.demo.DemoForWebServiceImplService;
 import service.webservice.client.demo.User;
 /** 
 * @author 作者 E-mail: 
 * @version 创建时间:2013-3-20 下午03:39:29 
 * 类说明 
 */
 public class TestWSClientByZBY {
 /**
   * @param args
   */
 public static void main(String[] args) {
   // TODO Auto-generated method stub
   Service service = Service.create(DemoForWebServiceImplService.SERVICE);
   
   String endpointAddress = "http://127.0.0.1:8080/InterfaceControlApp/webservice/demoForWebService?wsdl";
   service.addPort(DemoForWebServiceImplService.HTTPPort, javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
   // DMSSender dms = service.getPort(DMSSender.class);
   DemoForWebService dms = service.getPort(DemoForWebServiceImplService.HTTPPort,DemoForWebService.class);
    User user;
   try {
    user = dms.getUserById("admin");
    System.out.println(user.getXtczdm());
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
 }
 }


在服务端的实现类中@WebService(endpointInterface = "service.webservice.DemoForWebService",targetNamespace="http://webservice.service/",portName="HTTP_Port")

成功后:


调用完成。

 


环境配置:

1、下载apache-cxf-2.6.2在环境变量中配置CXF_HOME ,在PATH中加入%CXF_HOME%\bin

2、输入cmd 进入控制窗口,输入wsdl2java看是否配置成功

3、参考它的文档看这个工具的具体参数的用法
wsdl2java用法:
wsdl2java -p com -d src -all  aa.wsdl
-p  指定其wsdl的命名空间,也就是要生成代码的包名:
-d  指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web  service的代码
-impl 生成web service的实现代码
-ant  生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
详细用法见:http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html


http://blog.chinaunix.net/u2/73798/showart_2002108.html
http://hgoldfish.mysmth.net/2007/11/04/cxfceuuaaoathinaeoeie-2/

实例:wsdl2java -p com -d d:/src -client  http://portal.emp.gome.inc/HOwebapp/Gome.OA.ProcessService/Service/ProcessService.asmx?wsdl


Apache CXF 是一个Service框架,他简化了Service的创建, CXF实现了JAX-WS2.0规范,并通过了JAX-WS2.0 TCK; CXF和Spring无缝集成;CXF支持多种传输协议(HTTP, JMS, Corba等), 支持多种Binding数据格式(SOAP,XML,JSON等), 支持多种DataBinding数据类型(JAXB, Aegis) 。CXF基于Interceptor的架构,使得整个框架非常易于扩展。

二.  如何发布并调用简单的web service实例


2.1.下载:apache-cxf-2.1.1   http://cxf.apache.org/download.html


2.2. 新建java project ,并加入apache-cxf-2.0.7/lib所有包,编写要发布的web service 接口和实现

import javax.jws.WebService; 

 

  @WebService  

 

  public interface HelloWorld {   

 

       public String sayHello(String text);   

 

  } 

 

  import javax.jws.WebService;   

 

  @WebService(endpointInterface="test.HelloWorld")   

 

  public class HelloWorldImpl implements HelloWorld {   

 

        public String sayHello(String text) {   

 

                    return "Hello" + text ;   

 

      }   

 

    }  

 

  @WebService 注解表示是要发布的web 服务 

 

  name:用于Interface,属映射到wsdl:portType element的name属性。  
 
 targetNamespace:用于Interface和implement,如果不指定,缺省会使用包名倒序做为wsdl名空间。 
 

  serviceName:用于implement,表示wsdl服务名。 

 

  portName:用于implement,表示wsdl:port 的name属性。 

 

  endpointInterface:用于implement,指定Interface全名,包括包名。 

 

  2.3.发布web service 

 

  public class Server { 

 

      protected Server() throws Exception { 

 

           System.out.println("Starting Server"); 

 

           HelloWorldImpl implementor = new HelloWorldImpl(); 

 

           String address = " 
 http://localhost:9000/helloWorld"; 

 

           Endpoint.publish(address, implementor); 

 

      } 

 

      public static void main(String args[]) throws Exception { 

 

          new Server(); 

 

          System.out.println("Server ready..."); 

 

          Thread.sleep(5 * 60 * 1000); 

 

          System.out.println("Server exiting"); 

 

          System.exit(0); 

 

      } 

 

  }


运行后,在浏览器中输入 http://localhost:9000/helloWorld?wsdl将显示这个web service的wsdl.说明web service发布成功。


2.4.下面就开始创建一个客户端程序,访问这个web service, 同样新建java project ,并加入apache-cxf-2.0.7/lib所有包,由于CXF已经提供wsdl转化成java 的命令工具,所以创建一个build.xml,用来生成客户端程序。Bulid.xml内容如下:

<?xml version="1.0"?> 

 

  <project name="cxf wsdl2java" basedir=".">   

 

     <property name="cxf.home" location ="${basedir}/WebRoot/WEB-INF/"/> 

 

     <path id="cxf.classpath"> 

 

        <fileset dir="${cxf.home}/lib"> 

 

           <include name="*.jar"/> 

 

        </fileset> 

 

     </path>      

 

     <target name="cxfWSDLToJava"> 

 

        <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true"> 

 

           <arg value="-client"/> 

 

           <arg value="-d"/> 

 

           <arg value="src"/> 

 

           <arg value=" 
 http://localhost:9000/helloWorld?wsdl"/> 

 

           <classpath> 

 

              <path refid="cxf.classpath"/> 

 

           </classpath> 

 

        </java> 

 

     </target> 

 

  </project> 

 

  或者:配置环境变量%CXF_HOME%=E:/WebService/CXF/apache-cxf-2.1.1/apache-cxf-2.1.1(以我的目录为例),并在PATH后加上;%CXF_HOME%/bin 

 

  在cmd命令行中输入wsdl2java如果显示其用法表示配置好了。 

 

  输入:wsdl2java -d src - client  
 http://localhost:9000/helloWorld?wsdl 

 

  其作用上面的build.xml作用一样。 

 

  附加:wsdl2java用法: 

 

  wsdl2java -p com -d src -all  aa.wsdl 

 

  -p  指定其wsdl的命名空间,也就是要生成代码的包名: 

 

  -d  指定要产生代码所在目录 

 

  -client 生成客户端测试web service的代码 

 

  -server 生成服务器启动web  service的代码 

 

  -impl 生成web service的实现代码 

 

  -ant  生成build.xml文件 

 

  -all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file. 

 

  详细用法见: 
 http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html 

 

  2.5.调用web service 

 

  public class MyClient { 

 

        public static void main(String[] argv) { 

 

          HelloWorld  hello = new HelloWorldImplService().getHelloWorldImplPort(); 

 

          System.out.println(hello.sayHello("Tom") );  

 

        } 

 

      } 

 

  注意:运行时,要一定先要发布web sevice. 

 

  三.  参考资料 

 

  1.CXF 主页:  
 http://cxf.apache.org/ 

 

  2. CXF中文讨论组:  
 http://groups.google.com/group/cxf-zh  

 

  3. Web service:  
 http://www.w3school.com.cn/webservices/index.asp  
 4. WSDL:   http://www.w3school.com.cn/wsdl/index.asp  
 5. SOAP:http://www.w3school.com.cn/soap/index.asp 
 
以上是参考资料,以下是自己的实践----------------------------------------------------------------------------- 

 

  我在操作过程中,发现了一个方法的参数resultCode,以及另一个方法的voteCode都让我误操作定义为了错误的类型。 

 

  因此需要对 WSDL进行修改后,将其放置在:D:/test/0328目录下面。 

 

  我按照上面的地址下载到二级制压缩文件  apache-cxf-2.3.3.zip以后要注意,不要下载包含有src的 

 

  例如: apache-cxf-2.3.3-src.tar.gz 

 

  解压缩到D:/work/lib/apache-cxf-2.3.3 

 

  配置环境变量 CXF-HOME  为“D:/work/lib/apache-cxf-2.3.3” 

 

  增加  path  “%CXF-HOME %bin” 后, 

 

  在cmd下运行 

 

  D:/>cd test 

 

  D:/test>cd 0328 

 

  D:/test/0328>wsdl2java -frontend jaxws21 -p com.chinatelecom.jx.vote.inf.partner 
 
  *wsdl