Jaxws Soap Web サービスがあります。私の「myMethod」メソッドには、10 進数型のフィールドがあります。
これが私のWebサービスインターフェースです:
@WebService(name = "myWs", targetNamespace = "someNamespace")
@Local
public interface myWsPortType {
@WebMethod
@RequestWrapper(localName = "myMethod", className = "com.example.MyMethodRequest")
public Result myMethod(@WebParam(name = "parameters", mode = Mode.IN) MyMethodParameters parameters);
}
これはパラメータクラスです
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType()
public class MyMethodParameters implements java.io.Serializable {
@FieldValidation(maxLength = 12)
@XmlElement(name = "myField", required = false)
private java.math.BigDecimal myField;
}
myFieldに正しいタイプのデータを渡すと、すべてが正しく機能します。
しかし、問題は、myMethodを呼び出して (Decimal ではなく) String 値をパラメーターとして渡すと、例外がスローされず、 myFieldの値がnullになることです。
Soap Request の例を次に示します。
<soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<iss:myMethod>
<parameters>
<myField>test</myField>
</parameters>
</iss:myMethod>
</soapenv:Body>
</soapenv:Envelope>
間違ったデータ型が渡されたときに ws が例外をスローするようにするにはどうすればよいですか?