从wsdl(cxf)生成代码的最简单方法是什么?

时间:2014-08-26 09:41:04

标签: java wsdl cxf wsdl2java wsimport

我需要使用带有webservice-security的web服务。这个web服务是使用cxf(而不是我)创建的。

我到目前为止尝试过:

使用本地下载的wsdl(http://theopentutorials.com/examples/java-ee/jax-ws/create-and-consume-web-service-using-jax-ws/)进行wsimport。这失败了几个错误。我尝试了它没有-extension说"没有可用的端口,尝试使用-extension"。我试着用-extension说"没有标准的SOAP"。所以我认为这可能是因为他们使用了CXF。

在eclipse中使用cxf的Web服务客户端(http://help.eclipse.org/luna/topic/org.eclipse.jst.ws.cxf.doc.user/tasks/create_client.html)。当我选择步骤3d" Apache CXF 2" OK按钮变灰。如果我理解的话,可能是一个未解决的错误(https://bugs.eclipse.org/bugs/show_bug.cgi?id=351799)。

wsdl2java(https://axis.apache.org/axis2/java/core/tools/eclipse/wsdl2java-plugin.html#Installation)。我按照说明在单击完成时获取异常"完成进程时发生错误 - java.lang.InterruptedException:java.lang.RuntimeException:java.lang.reflect.InvocationTargetException"。

编辑:我现在在命令提示符下运行wsdl2java,收到以下错误:

wsdl2java -d C:\ xkfz -client -verbose C:\ xkfz.wsdl 加载FrontEnd jaxws ... 加载DataBinding jaxb ... wsdl2java -d C:\ xkfz -client -verbose C:\ xkfz.wsdl wsdl2java - Apache CXF 3.0.1

2014年8月26日下午4:07:23 org.apache.cxf.wsdl11.WSDLServiceBuilder checkForWrapped 信息:无法解开操作{http://www.xoev.de/schemata/xkfz/1_1} verarbeiteXKfz,输入消息必须引用具有与操作相同的本地名称的全局元素声明

有没有办法生成我想要的课程?这不应该那么复杂: - /

我将Win7 / 64与最新的Eclipse EE和JDK一起使用。

3 个答案:

答案 0 :(得分:4)

CXF包含一个Maven插件,可以从WSDL生成java工件。 它足够添加一些指定的配置值,如下所示:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>${cxf.version}</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${basedir}/src/main/resources/myService.wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

有关详细信息,请参阅this地址。 希望这会有所帮助。

答案 1 :(得分:1)

尝试使用eclipse插件生成类

http://sourceforge.net/projects/wsdl2javawizard/

答案 2 :(得分:0)

我发现我可以忽略wsdl2java的错误,因为它反正生成了一个类。根据我从ws-creator获得的示例,我只期望另一个类名。