繁体   English   中英

如何创建所需的WebMethod参数

[英]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&#385565

Metro 2.0于2009年12月10日发布,因此不再是EA。 我会试一试,看看它是否有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM