Java でコントラクト ファーストで生成された Web サービスに問題があります。私のスキーマでは、次のようなものがあります。
<element maxOccurs="1" minOccurs="1" name="GUID" type="xs:long" />
次のようなフィールドを持つクラスを生成します。
protected long GUID;
ここで、Web サービスを起動しようとすると、GUID に値を入力しないと、新しい Java long のデフォルト値が設定 (0) され、例外はスローされません。もちろん、これは良い動作ではありません。なぜなら、guid 要素が必要だからです。一方、スキーマ要素を次のように変更すると:
<element maxOccurs="1" minOccurs="0" name="GUID" type="xs:long" />
(GUID 要素が必要なため、論理的な観点からは正しくありません) 生成されたクラス フィールドは次のようになります。
{protected Long GUID; }
そして、Web サービスの実行で GUID が設定されていない場合、GUID 値は null になります。Java コードから例外をスローすることを確認できます。
保護された Long GUID を持つ minOccurs="0" 生成クラスを使用する方法についてアドバイスをお願いします。(または、この値が設定されていない場合に少なくとも例外が発生します)
私は Glassfish 2.1.1 で提供される JAXB と Web サービスを実行するための SopaUI を使用しています。