wsimport 无法读取wsdl文档,unknown extensibility element or attribute “EndpointReference“

在jdk的bin目录中使用命令生成class文件时出错,使用命令如下

wsimport -extension -Xnocompile -s 2022 -p com.xxx.util.WCFClient.bClient -keep http://xxxService.svc?wsdl

unknown extensibility element or attribute "EndpointReference"

解决方案如下

1.新建使用simple-binding.xjb文件,用于生成的java类不含ELEment无用封装属性,去除wsimport生成JAXBElement <T>
人们可以使用JDK6轻松地生成一个web service的客户端。然后不幸的是生成的代码会产生一个问题,就是<JAXBElement>类型化的参数。这个问题使得日常编码陷入以下困境:

    1. web service上的方法会使用JAXBElement类型的参数(作为输入参数)

    2. web service 上的方法将返回一个JAXBElement类型的包装过的对象,其内部的对象才是你需要的。

以上情况使得调用如以String等简单类型作为参数的方法变得十分困难,因为你不得不包装你的参数,但事实上这是不需要的动作。
当对象中有如:List变量时,生成的代码里面会出现没有setter方法,只有getter方法,此时只能通过getter方法先获取list在进行add()和remove()操作。

simple-binding.xjb文件放在jdk\bin:

<?xml version="1.0" encoding="UTF-8"?>
 
<jaxb:bindings
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
  xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc" jaxb:extensionBindingPrefixes="xjc">
  
  <jaxb:globalBindings generateElementProperty="false">
    <xjc:simple />
  </jaxb:globalBindings>
</jaxb:bindings>

然后使用命令:

wsimport -extension -Xnocompile -b simple-binding.xjb -s 2022 -p com.xxx.util.WCFClient.bClient -keep http://xxxService.svc?wsdl

当然,使用命令之前需要先将目录新建好,在bin目录下新建文件目录jdk1.8.0\bin\2022\com\xx\util\WCFClient

最后将目录里生成的java贴入工程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值