调用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);  
    }  
}  
相关文章
相关标签/搜索