У меня есть следующая проблема: я использую wsimport задачу Ant для создания клиента веб-сервиса (для salesforce.com). Все хорошо работает, но сгенерированные классы все использование этот странный класс JAXBElement для всех свойств компонента.
Например:
public void setLastName(JAXBElement<String> value) { this.lastName = ((JAXBElement<String> ) value); } public JAXBElement<String> getCountry() { return country; }
Вместо того, чтобы перенести все классы в JAXBElement я хотел бы иметь простые методы как setLastName (Представьте newLastName в виде строки). Это - то, как я называю wsimport задачу.
<wsimport debug="false" verbose="false" keep="${keep}"
extension="${extension}" destdir="${tmp.metro}"
wsdl="${licensing.wsdl}"
sourcedestdir="${licensingws.generated.src}"
>
<binding dir="${basedir}/etc" includes="${client.binding}"
/>
<arg value="-B-XautoNameResolution" />
</wsimport>
Задача определяется этот путь:
Кто-либо знает то, что я должен установить так, чтобы wsimport генерировал классы путем, я хочу? Большое спасибо заранее!!!
Причина использования оберток JAXBElement в сгенерированных бобах, вероятно, заключается в том, что WSDL объявляет это поле необязательным и нулевым. Чтобы отличить "не присутствует" от "присутствует, но но ноль", тип Строка не может быть использован напрямую, так как Строка в обоих случаях будет нулевой.
Если вам не нужно проводить различие между двумя ситуациями, вы можете настроить генератор кода на использование вместо него типа Строка. Я не на 100% уверен, как это сделать с задачей муравейника, но вы, вероятно, найдете соответствующую информацию в документации к задаче муравейника.