調用CXF工具 生成 WSDL【轉】

在作WebService的時候,生成WSDL是必不可少的一步。咱們一般使用的工具就是Axis和CXF。java

CXF提供了一個命令行工具,能夠經過命令來生成Java to WSDL,也能夠由WSDL生成Java類。apache

 

本文不講解CXF的工具使用,只考慮咱們在java程序中如何調用該工具來生成java代碼,這種運用情形在插件開發中是常見的。函數

 

思路:工具

1.首先考慮到:Runtime.getRutime().excut(String[]),測試

通過簡單測驗,我沒有經過,老是有錯。暫時否決。this

 

2.查詢CXF java 2 WSDLAPI:找到類 org.apache.cxf.tools.java2ws.JavaToWS.spa

這個類就是CXF命令行工具的執行類,找到它就好解決了。簡單代碼以下:插件

JavaToWS javaToWS = new JavaToWS(args);  
try {  
    javaToWS.run();  
} catch (Exception e) {  
    e.printStackTrace();  
}  

 運行,成功!命令行

 

附件具體測試類:code

package com.test.java2wsdl;   
  
public class Hello {   
  public String echo(String name){   
  return "echo: "+name;   
  }   
}   
package com.test.java2wsdl;  
  
import org.apache.cxf.tools.java2ws.JavaToWS;  
/** 
 * @description 使用CXF工具將Java類生成WSDL 
 * @author zhu_qhua 
 */  
public class Java2WSDL {  
    private Class<?> className;  
    public String[] args1,args2,args3;  
    /** 
     * 構造函數 
     * @param args 要生成WSDL的Java類 
     */  
    public Java2WSDL(Class<?> className) {  
        this.className = className;   
          
        //根據Hello.class生成Hello.wsdl,生成的wsdl文件放在resource目錄下  
        args1=new String[]{"-wsdl","-d","./resource",this.className.getName()};  
        //根據Hello.class生成Hello.wsdl,生成的文件放在根目錄下的.example下  
        args2=new String[]{"-wsdl","-cp", "./example",this.className.getName()};  
        // 根據Hello.class生成wsdl文件,文件命名爲myHello.wsdl,放在根目錄下  
        args3=new String[]{"-o","myHello.wsdl","-wsdl",this.className.getName()};  
    }  
    /** 
     * 構造函數 
     * @param className 要生成WSDL的Java類 
     * @param wsdlFileName 要生成WSDL的文件名稱(不包含擴展名) 
     */  
    public Java2WSDL(Class<?> className,String wsdlFileName) {  
        this.className = className;   
          
        //根據Hello.class生成Hello.wsdl,生成的wsdl文件放在resource目錄下  
        args1=new String[]{"-wsdl","-d","./resource",this.className.getName()};  
        //根據Hello.class生成Hello.wsdl,生成的文件放在根目錄下的.example下  
        args2=new String[]{"-wsdl","-cp", "./example",this.className.getName()};  
        // 根據Hello.class生成wsdl文件,文件命名爲myHello.wsdl,放在根目錄下  
        args3=new String[]{"-o",wsdlFileName+".wsdl","-wsdl",this.className.getName()};  
    }  
  
    public void java2WSDL(String[] args){  
        JavaToWS javaToWS = new JavaToWS(args);  
        try {  
            javaToWS.run();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
  
    public static void main(String[] args) {  
        Java2WSDL java2WSDL = new Java2WSDL(Hello.class);  
        java2WSDL.java2WSDL(java2WSDL.args1);  
    }  
}  
相關文章
相關標籤/搜索