摆脱由ant调用的wsimport生成的类中的JAXBElement
我有以下问题:我正在使用wsimport ant任务来创建一个webservice客户端(对于salesforce.com)。 一切正常,但生成的类都将这个奇怪的JAXBElement类用于所有bean属性。
例如:
public void setLastName(JAXBElement value) { this.lastName = ((JAXBElement ) value); } public JAXBElement getCountry() { return country; }
而不是将所有类包装在JAXBElement中,我想要使用setLastName(String newLastName)这样的简单方法。 这就是我调用wsimport任务的方式。
任务以这种方式定义:
有人知道我要设置什么,以便wsimport以我想要的方式生成类吗? 非常感谢提前!
在生成的bean中使用JAXBElement包装的原因可能是,WSDL声明该字段既可选又可以为nillable。 要区分“not present”和“present,but null”,不能直接使用String类型,因为两种情况下的String都是null。
如果您不需要区分这两种情况,则可以将代码生成器配置为使用String类型。 我不是100%确定如何使用ant任务执行此操作,但您可能会在ant任务文档中找到相关信息。
您必须自定义绑定 。
我遇到过类似的问题。
我使用了下面的绑定XML而天花板wsimport:参考了这个链接 。
绑定文件
示例wsimport命令:
wsimport -keep -b employerServiceWSD L_binding.xjb
注意: employerServiceWSDL_binding.xjb包含上面的绑定xml条目。
希望它也适用于其他人。