我有一个wsdl,我想使用Axis2(WSDL2Java)创建一个java存根客户端。
因为生成是在运行时生成的,并且由于系统本身的结构,我使用反射来调用wsdl2java:
Class<?> clzzOptionParser = classloader.loadClass("org.apache.axis2.util.CommandLineOptionParser");
Class<?> clzzEngine = classloader.loadClass("org.apache.axis2.wsdl.codegen.CodeGenerationEngine");
String[] args = new String[]{"-uri", wsdl.getAbsolutePath(),
"-o", myJavaCompilerComponent.getOutputPath().getAbsolutePath(),
"-p", packageName,
"-ap"
};
Object optionParser = clzzOptionParser.getDeclaredConstructor(new Class<?>[]{String[].class}).newInstance(new Object[]{args});
Object engine = clzzEngine.getDeclaredConstructor(new Class<?>[]{clzzOptionParser}).newInstance(optionParser);
clzzEngine.getMethod("generate").invoke(engine);
我用&#34; -ap&#34; - 告诉生成器包含所有端口类型的参数。虽然生成的存根包含所有类型的内部类(包括Request和响应类),但只生成第一种类型的方法(调用服务)。
如何启用AXIS创建所有内容?我认为-ap会做到这一点,但它没有用。
答案 0 :(得分:0)
它的工作原理是将WSDL文件拆分为多个文件,每个文件包含一个操作。