原文地址:https://sites.google.com/a/techdevtips.com/technical-development-site/java/java-webservice-client-how-to-remove-jaxbelement
人们可以使用JDK6轻松地生成一个web service的客户端。然后不幸的是生成的代码会产生一个问题,就是<JAXBElement>类型化的参数。这个问题使得日常编码陷入以下困境:
1. web service上的方法会使用JAXBElement类型的参数(作为输入参数)
2. web service 上的方法将返回一个JAXBElement类型的包装过的对象,其内部的对象才是你需要的。
以上情况使得调用如以String等简单类型作为参数的方法变得十分困难,因为你不得不包装你的参数,但事实上这是不需要的动作。
解决方案:
以下JAXB绑定文件可以在项目上解决该问题
把以下代码保存为XML文件,命名为 simple-binding.xjb (注意后缀名)
<?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>
\jdk1.6.0_10\bin\wsimport -b simple-binding.xjb -s src -keep TestWebService.wsdl