Apache CXF把wsdl生成java代码的方法
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服务开发,现在是时候试一下了。
