jaxws 阐明 soap 响应格式

jaxws enunciate soap response format

我继承了一个包含多个网络服务的项目。我使用其中一个作为模板来创建一个新的。它奏效了,并且得到了很好的肥皂反应。但是客户希望响应格式不同。 这是当前响应的片段:

<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 class 之一被修改为这样的注释:

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

我能看到

// Generated by Enunciate

在文件的顶部。什么提供名称 "inneoquestChannelMaps"?如何将 channelNumber 更改为 channel_number?

我在任何源文件中都找不到它,只能在目标构建文件中找到它。

好吧,我不知道它从哪里获取默认字段名称,但您可以使用 getChanelNumber 方法上方的注释将其强制​​为您想要的内容,如下所示:

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

我们必须处理的所有这些魔法 black-boxes 缺乏清晰的文档,这确实是 de-motivating。