【问题标题】:Not able to make @webparam mandatory field JAX-WS无法使 @webparam 强制字段 JAX-WS
【发布时间】:2018-09-13 14:49:24
【问题描述】:

我正在尝试使用(@XmlElement(required=true) 强制我的@webparam,但生成的XSD 仍将其显示为minOccurs="0"。也试过设置nillable=false,但还是不行。

这是我的网络方法:

@WebMethod
@WebResult(name = "Biller")
public Biller getBiller(@XmlElement(required=true) @WebParam(name = "billerId") Integer billerId){}

请提出建议。

【问题讨论】:

  • 尝试了所有这些步骤,仍然面临同样的问题。
  • 你的 cxf 版本是多少?
  • 它的 2.6.1。还在我的 Web 服务类中添加了 @EndpointProperties(value = { @EndpointProperty(key = "schema-validation-enabled", value = "true") })
  • 尝试添加@SchemaValidation(enabled=true),仍然没有成功。

标签: java web-services cxf jax-ws


【解决方案1】:

正如我在 cmets 中指定的那样 - 您需要将 Integer 变量包装到一些 Java POJO 中并为该 POJO 中的特定字段应用规则,或者更改为原始类型,因为 - 引用类型始终是可选的,但包装器的组成字段类型可以是必需的或可选的。 始终需要原始类型。

Refer this answer

然后是关于默认值的问题 - 为此请参阅Answers to this question 和摘要是 - 如果未指定任何内容 -

minOccurs 和 maxOccurs 默认为 1

现在为什么您的调用通过 SOAP UI 成功 - 您的 xsd 是正确的,并且已被 SOAP UI 确认,所以我的猜测是客户端可能会在丢失时附加一些默认值。我没有使用过 SOAP UI。尝试检查您的请求,看看是否真的缺少价值。如果请求中确实缺少值,则尝试检查验证未启动的原因。

【讨论】:

  • 感谢您的回答,当我将 @com.sun.xml.ws.developer.SchemaValidation 添加到我的 Web 服务类时,SOAP UI 开始根据 XSD 模式验证我的请求。但是现在我得到了 com.sun.xml.ws.encoding.soap.DeserializationException 以获取我想要弄清楚的响应。谢谢阿吉恩 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多