SOAP服务中的不可见或隐藏的XML元素

时间:2014-09-12 04:18:13

标签: java cxf jax-ws

我正在使用Java构建嵌入式JAX-WS SOAP服务。我正在使用javax.xml.bind定义我的数据类型。

我在其中一个我想要隐藏的数据类型中有一个字段,因此在发布WSDL时它将受到支持但不可见。

我的动机是我们正在弃用属性,但我仍然会支持它(内容将被忽略和未使用)。在下面的示例中,如果用户在http://myservice?wsdl访问WSDL,他们将看不到属性email作为user的一部分

我可以使用哪些注释来提供此功能?可替代地

@XmlType
public class User
{
 @XmlElement
 public String name;

 @XmlElement
 @Hidden (?)
 public String email;

}

1 个答案:

答案 0 :(得分:1)

我不知道告诉CXF忽略生成的WSDL中的元素的任何标准方法。一种选择是维护一个静态WSDL文件,然后手动删除" hidden"架构中的元素。您可以将该字段保留在JAXB注释类中。如果使用Spring配置服务,则可以使用wsdlLocation属性添加WSDL:

<jaxws:endpoint 
    wsdlLocation="classpath:/Service.wsdl">
</jaxws:endpoint>

请注意,包含&#34;隐藏&#34;的XML字段将不再验证,因此如果您对输入消息使用模式验证,则需要忽略这些错误。