使用jaxws-maven-plugin代替wsimport生成webservice客户端代码

JDK11使用jaxws-maven-plugin代替wsimport生成webservice客户端代码


一、背景

jdk11移除了wsimport,详情可见,https://stackoverflow.com/questions/53192401/where-is-wsimport-after-jdk11

二、使用jaxws-maven-plugin

可以使用jaxws-maven-plugin插件生成客户端代码,以下使用了一个公网可以访问的webservice地址作为示例,亲测可用

			<plugin>
				<groupId>com.helger.maven</groupId>
				<artifactId>jaxws-maven-plugin</artifactId>
				<version>2.6.2</version>
				<configuration>
					<packageName>
						com.xxx.xxx.webservice
					</packageName>
					<!-- 测试webservice文件生成-->
<!--					<wsdlUrls>-->
<!--						<wsdlUrl>http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl</wsdlUrl>-->
<!--					</wsdlUrls>-->
					<wsdlFiles>
						<wsdlFile>
							/path/to/file
						</wsdlFile>
					</wsdlFiles>
					<keep>true</keep>
					<verbose>true</verbose>
					<sourceDestDir>src\main\java</sourceDestDir>
					<vmArgs>
						<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
					</vmArgs>
				</configuration>
			</plugin>
<think>好的,用户想了解如何生成WebService代码以及相关功能的实现。首先,我需要整理现有的引用资料,看看有哪些方法和工具可以使用。引用中提到了JDK、MyEclipse、SoapUI with CXF、IDEA和Postman这些工具。用户可能需要具体的步骤,所以每个工具的使用步骤都要简明扼要地列出。 接下来,用户可能对生成代码后的调用方式也感兴趣,所以需要补充调用示例,比如用JDK的JAX-WS或者CXF框架。这部分要确保代码示例正确,并提到依赖管理,比如Maven配置,这样用户知道如何引入必要的库。 然后,关于代码生成功能的实现,用户可能是开发者想自己集成这个功能,需要解释如何解析WSDL,生成代理类,并处理通信协议。这部分可能需要更技术性的描述,但也要保持易懂,比如提到使用Apache CXF或Axis2这样的框架。 还要考虑用户可能遇到的常见问题,比如WSDL的获取、依赖冲突、协议兼容性等,给出注意事项和建议。比如确保WSDL可访问,检查依赖版本,处理复杂数据类型等。 最后,生成相关问题时要围绕用户的需求,可能涉及不同工具的比较、解决常见错误、手动生成的方法以及调试技巧。这些问题可以帮助用户进一步探索和解决实际中的问题。 整个过程中要确保结构清晰,步骤明确,语言简洁,符合用户的需求层次。从工具使用代码实现,再到注意事项,层层递进,帮助用户全面了解WebService代码生成的各个方面。</think>### 如何生成WebService代码及实现功能 #### 一、生成WebService客户端代码的常用方法 1. **使用JDK内置工具(wsimport)** - 通过命令行执行`wsimport -keep [wsdl地址]`,自动生成客户端代码。例如: ```bash wsimport -keep http://www.example.com/Service.asmx?wsdl ``` - 生成的文件包括服务端点接口、数据类型类等,可直接用于调用服务[^1]。 2. **通过IDE集成工具** - **MyEclipse/IDEA**: 1. 新建项目,右键选择`New -> Web Service Client` 2. 输入WSDL地址(如`http://www.ayandy.com/Service.asmx?wsdl`) 3. IDE自动解析并生成客户端代理类和调用示例[^2][^4]。 - **IntelliJ IDEA**还支持通过Maven插件生成代码,需添加`jaxws-maven-plugin`依赖[^4]。 3. **使用SoapUI + CXF框架** - 在SoapUI中导入WSDL文件 - 右键选择`Generate Code -> Apache CXF`,配置输出路径后生成Java客户端代码[^3]。 4. **Postman辅助调试** - 将SoapUI中生成的XML请求体复制到Postman的Body中,选择`raw -> XML`格式,用于测试服务连通性[^5]。 #### 二、调用WebService代码示例(以JAX-WS为例) ```java // 通过生成的Service类调用 MyService service = new MyService(); MyPortType port = service.getMyPortTypePort(); String result = port.myMethod("参数"); ``` #### 三、代码生成功能的实现原理 1. **WSDL解析**:工具会解析WSDL中的`<portType>`、`<binding>`等节点,提取操作方法和参数类型[^1]。 2. **代理类生成**:根据`<message>`和`<types>`定义生成Java Bean和接口,例如将`<xs:complexType>`映射为POJO类。 3. **通信协议处理**:通过SOAP协议封装请求,依赖`javax.xml.ws`包实现HTTP通信[^4]。 #### 四、注意事项 1. 确保WSDL地址可访问且格式正确 2. 若遇到依赖冲突(如不同版本的JAXB),需统一依赖版本 3. 部分工具(如JDK 8+)需添加`-Djdk.http.auth.tunneling.disabledSchemes=""`参数解决认证问题 4. 对复杂数据类型需手动补充序列化逻辑
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值