【问题标题】:How can I make a WebMethod parameter required如何使 WebMethod 参数成为必需
【发布时间】:2011-01-13 16:46:12
【问题描述】:

我们使用“从 Java 开始”的方法来使用 Metro 1.5 堆栈创建 JAX-WS 2.0 Web 服务。当我们将像 SoapUI 这样的标准工具指向我们的一个 Web 服务时,它表明 WebMethods 的参数是可选的。生成的 xsd 显示 minOccurs=0。

我需要一种在“从 Java 开始”方法中使 WebMethod 参数成为必需的方法(可能是 xsd 中的 minOccurs=1)。我认为对此有一个 Java 注释,但我一直找不到。 XmlElement 注解具有必需属性,但 XmlElement 不能应用于 WebMethod 参数。

除了手动编辑 xsd 并将 minOccurs 设置为 1 之外,有没有办法让我的 WebMethod 参数成为必需?

【问题讨论】:

    标签: java web-services jaxb jax-ws java-metro-framework


    【解决方案1】:

    我已经验证 Metro 2.0 确实允许您在参数上设置 @XmlElement(required=true)。生成的 xsd 没有minOccurs=0。它将minOccurs 排除在生成的xsd 之外,因此它采用默认值1。

    您还必须通过将 JAX-WS 2.2 webservices-api.jar 放在 endorsed/ 目录中来升级您的 JDK。

    我发布了同样的问题on the Java forums

    感谢 jitu 的回答并指出 minOccurs 默认为 1,因此将其保留在 .xsd 之外具有预期的效果。

    当在参数上设置@XmlElement(required=true) 时,SoapUI 不再指示该参数为可选。

    【讨论】:

      【解决方案2】:

      生成的 xsd 显示 minOccurs=0。

      这是每个规范:任何非基元都是可选的,只有基元是必需的。

      我需要一种方法在“从 Java 开始”方法中使 WebMethod 参数成为必需(可能是 xsd 中的 minOccurs=1)。

      这是不可能的,除非您使用前面提到的原语。

      实际上,这就是 Java 优先糟糕的原因之一(是的,开发人员喜欢它,但 it just does not work):它很脆弱,合同可能会改变(!),它并没有给你所有的控制权需要,它不需要fit well with WS-Security 等。所以,确实,contract-first 并不令人愉快,但至少,它有效。

      【讨论】:

      • 感谢 cmets 和链接。我希望那些臃肿的网络服务书籍(其中一些我已经阅读过 - 我的意思是涉水过)能像你一样清楚地说明这一点。
      • @Dean 不客气。并感谢您对 JAX-WS 2.2 的反馈(即使这实际上不在最初问题的范围内)。
      • 我会说 WSDL-first 同样不起作用。您链接到的博客讨论了使用复杂的 Request 和 Return 对象进行包装,但这会带来许多问题,例如在底层字段中隐藏所需的东西、滥用重用等……再说一次,我会举起一个使用 Spring 和代理使 WebService 之类的东西看起来像本地接口的简单实现这样的好例子。以这种方式修改本地界面是让您不会忘记它是碰巧通过 JAX-WS 公开的服务的一部分。
      【解决方案3】:

      这是对同一问题的另一个讨论。根据响应 Metro 2.0 支持将 @XmlElement 放在方法参数上,这应该可以解决我的问题。

      http://forums.java.net/jive/thread.jspa?messageID=385565&#385565

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

      【讨论】:

      • 好像可以,但是提供的链接是404,有机会更新源码吗?
      猜你喜欢
      • 2019-07-25
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 2016-09-18
      相关资源
      最近更新 更多