Удаление Nillable=true при создании WSDL

Я создаю веб-службы и генерирую контракт (WSDL) с Axis2, например веб-службу POJO, которая, в свою очередь, дает мне такой результат

<xs:element minOccurs="0" name="acHolderName" nillable="true" type="xs:string"/>

В то время как требуемый это <xs:element minOccurs="0" name="acHolderName" type="xs:string"/>

Есть ли какая-нибудь аннотация, которая может заставить меня сделать это или любую другую лучшую реализацию??


person Sandeep    schedule 10.05.2010    source источник


Ответы (1)


Атрибут nil задокументирован здесь.

С точки зрения сериализации объекта Java это позволяет атрибуту объекта иметь значение NULL и по-прежнему быть допустимым XML-документом. Это способ представления объектов Java в XML-схеме по умолчанию, поскольку атрибуты объектов не заполняют принудительно в Java.

Если вам нужен больший контроль над WSDL, вам нужно подумать об использовании чего-то вроде JAXWS. Проблема здесь в том, что поддержка этой технологии в Axis2 не очень развита, и, на мой взгляд, ее сложнее развернуть.

Если вам нужен абсолютный контроль над вашим WSDL (используя его в качестве спецификации интерфейса), вероятно, лучше всего использовать его для генерации кода Java, а не надеяться, что ваш java будет соответствовать чьей-то спецификации.

person Mark O'Connor    schedule 10.05.2010
comment
Если вы используете Apache с JAX-WS, вам, вероятно, лучше использовать Apache CXF. - person Powerlord; 10.05.2010
comment
Очень ценю ваше время на ответ :) Но вся проблема здесь в подходе сверху вниз. Как я уже сказал, есть WSDL с последним тегом XML, и я должен использовать его ТОЛЬКО. Чтобы АНАЛИЗИРОВАТЬ, я сгенерировал WSDL (Примечание: следуйте снизу вверх, чтобы проверить, ЧТО ПОШЛО НЕ ТАК??). Сгенерированный имел nillable=true для всех полей в POJO. Мой вопрос здесь: нужно ли мне что-то реализовывать в POJO, чтобы при создании WSDL он автоматически опускал nillable=true? - person Sandeep; 11.05.2010
comment
Насколько я знаю, это невозможно сделать с помощью веб-сервисов на основе POJO. Атрибут nil предназначен для представления значения NULL для объекта. Конечно, атрибут minOccurs=0 также может представлять значение NULL, и именно это приводит к путанице в воспроизведении объектов Java веб-службой... Я не знаю, почему существуют два механизма... Во всем виновата спецификация схемы XML. :-( - person Mark O'Connor; 11.05.2010
comment
Либо сгенерируйте код интерфейса из WSDL, либо используйте такую ​​технологию, как JAX-WS, которая позволяет вам лучше контролировать сгенерированный WSDL из кода Java. - person Mark O'Connor; 11.05.2010