jaxws провозглашает формат ответа мыла

Я унаследовал проект, который содержит несколько веб-сервисов. Я использовал один из них в качестве шаблона для создания нового. Это сработало, и я получаю хороший отклик на мыло. Но клиент хочет, чтобы формат ответа был другим. Вот фрагмент текущего ответа:

<inneoquestChannelMaps>
      <channelNumber>1</channelNumber>
      <eiaChannel>23</eiaChannel>
      <encryptionStatus>Encrypted</encryptionStatus>
      <frequency>219</frequency>
      <mpegServiceId>5</mpegServiceId>
      <qam>visible</qam>
      <sourceId>23071</sourceId>
      <sourceName>XFINITYOD</sourceName>
   </inneoquestChannelMaps>
   <inneoquestChannelMaps>
      <channelNumber>2</channelNumber>
      <eiaChannel>19</eiaChannel>

Итак, вы видите, что это серия записей, возвращаемых из запроса к базе данных. Я не могу понять, что дает имена для каждого поля данных в ответе?

Клиент хочет разные имена, например

<channel_number>1</channel_number> 

Я вижу, что они, вероятно, генерируются подключаемым модулем maven enunciate, потому что после сборки maven один из созданных мной java-классов изменяется с помощью аннотаций, подобных этой:

@javax.xml.bind.annotation.XmlElement (
    name = "inneoquestChannelMaps",
    namespace = ""
  )

и я могу видеть

// Generated by Enunciate

в верхней части файла. Что дает название "inneoquestChannelMaps"? Как изменить channelNumber на channel_number?

Я не могу найти его ни в одном из исходных файлов, только в целевых файлах сборки.

1 ответ

Решение

Ну, я понятия не имею, где он получает имена полей по умолчанию, но вы можете принудительно указать, что вы хотите, используя аннотацию над методом getChanelNumber, например так:

  @javax.xml.bind.annotation.XmlElement (
    name = "channel_number",
    namespace = ""
  )
    public Integer getChannelNumber() {
        return channel_number;
    }

Отсутствие четкой документации для всех этих волшебных черных ящиков, с которыми нам приходится иметь дело, действительно демотивирует.

Другие вопросы по тегам