欢迎访问宙启技术站
智能推送

Apache CXF把wsdl生成java代码的方法

发布时间:2023-05-17 00:20:07

Apache CXF是一个开源的服务端框架,它提供了Java API来创建和维护Web服务。CXF支持JAX-RS和JAX-WS标准,并且基于标准JAXB和XML Schema(XSD)自动生成客户端和服务端代码。下面我们来看一下如何使用CXF来生成Java代码。

1. 确保环境搭建完成

在开始之前,你需要确保以下环境已经安装并配置完成:

- Java 8或以上版本

- Maven 3.1或以上版本

安装完成后,打开终端并输入以下命令来检查版本:

java -version

mvn -version

如果没有报错,说明你已经完成了环境的搭建。

2. 下载wsdl2java插件

CXF提供了一个名为wsdl2java的插件,它可以把WSDL文件转换为Java接口和实现类。你可以在CXF官网下载这个插件,或者通过Maven从中央仓库进行添加。

下载后,解压到本地,或者在pom.xml文件中添加如下配置:

<build>
    <plugins>
        <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-sources/cxf</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${project.basedir}/src/main/resources/wsdl/your_wsdl_file.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-impl</extraarg>
                                    <extraarg>-fe</extraarg>
                                    <extraarg>jaxws21</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

在这个配置中,我们指定了wsdl2java插件的版本号,并且在插件的执行过程中,指定了要生成代码的WSDL文件路径、生成代码的目录、以及一些额外参数。

3. 执行生成命令

在配置完成后,我们可以在项目根目录下执行以下命令来生成Java代码:

mvn generate-sources

执行完该命令后,你可以在指定的源代码目录中看到生成的Java代码。另外,你也可以指定具体的插件执行过程中生成的代码目录,如下所示:

mvn org.apache.cxf:cxf-codegen-plugin:3.3.6:wsdl2java -DwsdlFile=src/main/resources/wsdl/hello.wsdl -DoutputDir=target/generated-sources/cxf -DpackageName=com.hello.api

这个命令指定了插件的版本号、WSDL文件路径、生成代码的包名以及生成代码的目录。

4. 测试生成的Java文件

代码生成完成后,我们可以编写一个测试类来检查生成的Java代码是否按照预期工作。以下是一个简单的测试类的代码示例:

public class HelloAPItest {

    public static void main(String[] args) {

        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass(IHello.class);
        factory.setAddress("http://localhost:8080/hello");

        IHello client = factory.create(IHello.class);
        System.out.println(client.sayHello("world"));
    }
}

在这个测试类中,我们通过JaxWsProxyFactoryBean创建了一个IHello接口的代理,并且调用了它的sayHello方法。如果一切工作正常,你应该能够看到“hello world”这个输出结果。

总结

本文介绍了如何使用CXF来生成Java代码。使用CXF生成代码可以大大减少创建Web服务和客户端的工作量,提高开发效率。如果你还没有开始使用CXF进行Web服务开发,现在是时候试一下了。