WSDL2Java生成类的基本使用方法
WSDL(Web Services Description Language)是描述Web服务的标准XML格式,而WSDL2Java是Apache CXF或Axis等框架提供的工具,用于将WSDL文件转换为Java类,这些生成的类简化了与服务端的交互,开发者无需手动处理复杂的SOAP协议,以下是WSDL2Java生成类的具体使用步骤和注意事项。

生成Java类前的准备工作
在使用WSDL2Java之前,需确保满足以下条件:
- 安装工具:若使用Apache CXF,需下载并配置CXF的bin目录到环境变量;若使用Axis,需安装Axis1.x或Axis2。
- 获取WSDL文件:从服务提供方获取WSDL文件的URL或本地文件路径。
- 检查依赖:项目中需引入对应框架的依赖(如CXF的cxf-rt-frontend-jaxws等),确保生成的类能正常编译运行。
通过命令行生成Java类
以Apache CXF为例,打开命令行工具,执行以下命令:
wsdl2java -p com.example.client -d src -client -server -impl -wsdl http://example.com/service?wsdl
参数说明:

-p:指定生成的Java包名,避免与其他类冲突。-d:设置代码输出目录,如src/main/java。-client:生成客户端调用代码(包含main方法)。-server:生成服务端实现骨架代码。-impl:生成服务端接口实现类。-wsdl:指定WSDL文件的URL或本地路径。
执行后,会在指定目录下生成多个Java文件,包括服务接口(Service Interface)、服务端点实现(Service Implementation)、客户端调用类(Client)等。
客户端调用Web服务
生成的客户端类可直接用于调用服务端的接口,以CXF为例,步骤如下:
- 初始化服务接口:通过生成的
Service类获取服务接口实例。com.example.client.Service service = new com.example.client.Service(); com.example.client.ServiceInterface port = service.getServiceInterfacePort();
- 调用接口方法:直接调用服务端定义的方法,参数和返回值类型与WSDL中描述一致。
String result = port.serviceMethod("param1", 123); System.out.println("Response: " + result); - 处理异常:若服务端抛出SOAPFault,需捕获
SOAPException或自定义异常。
服务端实现Web服务
若生成了服务端代码,需实现具体的业务逻辑:

- 实现接口类:继承生成的
ServiceImpl类,重写接口方法。public class ServiceImpl extends ServiceInterfaceImpl { @Override public String serviceMethod(String param1, int param2) { // 自定义业务逻辑 return "Processed: " + param1 + ", " + param2; } } - 发布服务:使用CXF或Axis的发布工具将服务暴露到指定地址。
import org.apache.cxf.jaxws.JaxWsServerFactoryBean; public class Server { public static void main(String[] args) { JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); factory.setServiceClass(com.example.client.ServiceInterface.class); factory.setServiceBean(new ServiceImpl()); factory.setAddress("http://localhost:8080/service"); factory.create(); System.out.println("Service started..."); } }
注意事项
- 命名空间与包名:确保
-p参数指定的包名与WSDL中的targetNamespace一致,避免运行时找不到类。 - 复杂类型处理:若WSDL中包含自定义复杂类型(如
xs:element),生成的类会对应JavaBean,需注意字段命名和getter/setter方法。 - 依赖版本兼容性:使用的框架版本需与生成工具版本匹配,避免因API不兼容导致编译失败。
- 调试与日志:开启CXF或Axis的日志级别(如
INFO或DEBUG),便于排查SOAP请求/响应问题。
通过以上步骤,开发者可以高效地利用WSDL2Java生成的类构建或调用Web服务,减少重复编码工作,同时确保与服务的标准化交互。















