`
yianpuodiaotu
  • 浏览: 237638 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

调用CXF工具 生成 WSDL

    博客分类:
  • JEE
阅读更多

在做WebService的时候,生成WSDL是必不可少的一步。我们通常使用的工具就是Axis和CXF。

CXF提供了一个命令行工具,可以通过命令来生成Java to WSDL,也可以由WSDL生成Java类。

 

本文不讲解CXF的工具使用,只考虑我们在java程序中如何调用该工具来生成java代码,这种运用情形在插件开发中是常见的。

 

思路:

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

经过简单测验,我没有通过,总是有错。暂时否决。

 

2.查询CXF java 2 WSDLAPI:找到类 org.apache.cxf.tools.java2ws.JavaToWS.

这个类就是CXF命令行工具的执行类,找到它就好解决了。简单代码如下:

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

 运行,成功!

 

附件具体测试类:

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);
	}
}

  

 项目下载

分享到:
评论
1 楼 wuwei1616 2011-12-20  
我想问下lz 我生成了 wsdl文件 我用客户端去调用 怎么总是的报错呀

相关推荐

Global site tag (gtag.js) - Google Analytics