Metro 1.5スタックを使用してJAX-WS 2.0 Webサービスを作成するには、「Javaから開始する」アプローチを使用します。 SoapUIなどの標準ツールをWebサービスの1つに向けると、WebMethodsへのパラメーターがオプションであることを示します。生成されたxsdはminOccurs = 0を示します。
「Javaから開始する」アプローチでWebMethodパラメーターを必須にする方法(xsdのminOccurs = 1)が必要です。 Javaアノテーションがあると思いますが、見つかりませんでした。XmlElementアノテーションには必要な属性がありますが、XmlElementをWebMethodパラメータに適用できません。
Xsdを手動で編集してminOccursを1に設定する以外に、WebMethodパラメーターを必須にする方法はありますか?
Metro 2.0ではパラメーターに@XmlElement(required=true)
を設定できることを確認しました。生成されたxsdにはminOccurs=0
がありません。生成されたxsdからminOccurs
を除外するため、デフォルト値は1と見なされます。
また、JAX-WS 2.2 webservices-api.jar
をendorsed/
ディレクトリに配置して、JDKをアップグレードする必要があります。
同じ質問を投稿しました Javaフォーラム に。
答えとminOccursのデフォルトが1であることを指摘しているjituのおかげで、.xsdから除外すると望ましい効果が得られます。
@XmlElement(required = true)がパラメーターに設定されている場合、SoapUIはパラメーターがオプションであることを示しなくなりました。
生成されたxsdはminOccurs = 0を示します。
これは仕様によるものです。非プリミティブはオプションであり、プリミティブのみが必要です。
「Javaから開始する」アプローチでWebMethodパラメーターを必須にする方法(xsdのminOccurs = 1)が必要です。
前述のようにプリミティブを使用しない限り、これは不可能です。
そして、実際には、これがJavaが最初に失敗する理由の1つです(そうです、開発者はそれを気に入っていますが、 それは機能しないだけです ):壊れやすく、契約が変更される可能性があります(!)、そうではありません必要なすべてのコントロールを提供しますが、それは WS-Securityとうまく適合します などではありません。したがって、実際には contract-first は快適ではありませんが、少なくとも、できます。
これは、この同じ質問の別の議論です。応答によると、Metro 2.0は@XmlElementをメソッドパラメータに配置することをサポートしており、問題を解決するはずです。
http://forums.Java.net/jive/thread.jspa?messageID=385565񞈝
Metro 2.0は2009年12月10日にリリースされたため、EAにはありません。私はそれを試して、それが機能するかどうかを確認します。