30

Metro 1.5 スタックを使用して JAX-WS 2.0 Web サービスを作成するには、「Java から開始」アプローチを使用します。Web サービスの 1 つで SoapUI のような標準ツールを指定すると、WebMethods へのパラメーターがオプションであることを示します。生成された xsd は、minOccurs=0 を示しています。

「Java から開始」アプローチで WebMethod パラメータを必須にする方法が必要です (xsd ではおそらく minOccurs=1)。これにはJavaアノテーションがあると思いますが、見つけることができませんでした。XmlElement アノテーションには必須の属性がありますが、XmlElement を WebMethod パラメーターに適用することはできません。

xsd を手動で編集して minOccurs を 1 に設定する以外に、WebMethod パラメーターを必須にする方法はありますか?

4

3 に答える 3

28

Metro 2.0@XmlElement(required=true)でパラメータを設定できることを確認しました。生成された xsd にはminOccurs=0. minOccurs生成された xsd から除外されるため、デフォルト値の 1 が想定されます。

また、JAX-WS 2.2webservices-api.jarendorsed/ディレクトリに配置して、JDK をアップグレードする必要があります。

同じ質問を Java フォーラムに投稿しました。

答えと、minOccurs のデフォルトが 1 であることを指摘してくれた jitu に感謝します。

パラメータに @XmlElement(required=true) が設定されている場合、SoapUI はパラメータがオプションであることを示しません。

于 2010-02-09T19:37:52.853 に答える
6

生成された xsd は minOccurs=0 を示しています。

これは仕様によるものです。非プリミティブはオプションであり、プリミティブのみが必要です。

「Javaから開始」アプローチでWebMethodパラメーターを必須にする方法が必要です(xsdではおそらくminOccurs = 1)。

前述のようにプリミティブを使用しない限り、これは不可能です。

そして実際には、これが Java ファーストがうまくいかない理由の 1 つです (ええ、開発者はそれを気に入っていますが、単に機能しません): Java ファーストは脆弱であり、コントラクトが変更される可能性があり (!)、必要なすべての制御が提供されません。 、それはWS-Security などとうまく適合しません。したがって、確かに、contract-firstは快適ではありませんが、少なくとも機能します。

于 2010-02-06T21:40:05.897 に答える
3

これは、この同じ質問についての別の議論です。応答によると、Metro 2.0は、私の問題を解決するはずのメソッドパラメータに@XmlElementを配置することをサポートしています。

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

Metro 2.0は2009年12月10日にリリースされたため、EAには含まれていません。試してみて、機能するかどうかを確認します。

于 2010-02-09T04:33:36.740 に答える