使用Axis生成Stub时缺少操作

时间:2015-09-07 11:18:45

标签: axis wsdl2java

我有一个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会做到这一点,但它没有用。

1 个答案:

答案 0 :(得分:0)

它的工作原理是将WSDL文件拆分为多个文件,每个文件包含一个操作。