目前CXF的 WSDL2JAVA 一次只能搞一个WSDL, 但一个项目中可能需要搞多个WSDL并打成一个JAR包。 下面的这个类就是帮助你从多个WSDL中生成一团JAVA文件。与ANT结合起来,可以得到更好的效果。
import java.util.ArrayList; import java.util.Arrays; import org.apache.cxf.tools.wsdlto.WSDLToJava; /** * Generate Java Codes from a number of WSDL files/urls <br/> * * @author chenjianjx * */ public class WSDLsToJava { /** * * @param args * The last args should be like "-wsdlList %wsdl1% %wsdl2% ..." <br/> * The args between these are just those of CXF */ public static void main(String[] args) { ArrayList<String> argsList = new ArrayList<String>(Arrays.asList(args)); int argIndexForWsdl = getArgIndexForWsdl(argsList); ArrayList<String> preWsdlArgs = getPreWsdlArgs(argsList, argIndexForWsdl); for (int i = argIndexForWsdl; i < argsList.size(); i++) { String wsdl = argsList.get(i); ArrayList<String> cxfArgsList = new ArrayList<String>(); cxfArgsList.addAll(preWsdlArgs); cxfArgsList.add(wsdl); WSDLToJava.main(listToArray(cxfArgsList)); } } private static String[] listToArray(ArrayList<String> list) { String[] array = new String[list.size()]; list.toArray(array); return array; } private static ArrayList<String> getPreWsdlArgs(ArrayList<String> argsList, int argIndexForWsdl) { ArrayList<String> preWsdlArgs = new ArrayList<String>(); for (int i = 0; i < argIndexForWsdl - 1; i++) { String arg = argsList.get(i); preWsdlArgs.add(arg); } return preWsdlArgs; } private static int getArgIndexForWsdl(ArrayList<String> argsList) { for (int i = 0; i < argsList.size(); i++) { String arg = argsList.get(i); if (arg.trim().equals("-wsdlList")) { return i + 1; } } throw new IllegalStateException("No \"-wsdlList\" arg found"); } }