![](/img/trans.png)
[英]JAXB: Can I make XmlAttribute's parameter “required=true” to default?
[英]How can I make a WebMethod parameter required
我们使用“从Java开始”方法使用Metro 1.5堆栈创建JAX-WS 2.0 Web服务。 当我们在其中一个Web服务上指向SoapUI等标准工具时,它表明WebMethods的参数是可选的。 生成的xsd显示minOccurs = 0。
我需要一种方法来使“从Java开始”方法中需要WebMethod参数(在xsd中可能是minOccurs = 1)。 我认为这有一个Java注释,但我找不到一个。 XmlElement注释具有必需属性,但XmlElement不能应用于WebMethod参数。
有没有办法使我的WebMethod参数成为必需,没有手动编辑xsd并将minOccurs设置为1?
我已经验证Metro 2.0允许您在参数上设置@XmlElement(required=true)
。 生成的xsd没有minOccurs=0
。 它将minOccurs
从生成的xsd中删除,因此它假定默认值为1。
您还必须通过将JAX-WS 2.2 webservices-api.jar
放在endorsed/
目录中来升级JDK。
我在Java论坛上发布了同样的问题。
感谢jitu的答案,并指出minOccurs默认为1,因此将其从.xsd中删除具有所需的效果。
当参数SoapUI上设置@XmlElement(required = true)时,不再将该参数指示为可选参数。
生成的xsd显示minOccurs = 0。
这是每个规范:任何非基元都是可选的,只需要基元。
我需要一种方法来使“从Java开始”方法中需要WebMethod参数(在xsd中可能是minOccurs = 1)。
除非您使用前面提到的原语,否则这是不可能的。
实际上,这是Java-first糟透人的原因之一(是的,开发人员喜欢它但它只是不起作用 ):它很脆弱,合同可能会改变(!),它不会给你所需的所有控制权它确实不适合WS-Security等。所以, 合同优先确实不愉快,但至少,它有效。
以下是对同一问题的另一种讨论。 根据响应,Metro 2.0支持将@XmlElement放在一个方法参数上,该参数可以解决我的问题。
http://forums.java.net/jive/thread.jspa?messageID=385565񞈝
Metro 2.0于2009年12月10日发布,因此不再是EA。 我会试一试,看看它是否有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.