我有Jaxws Soap网络服务。我的“myMethod”方法有一个十进制类型字段。
这是我的网络服务界面:
@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 并传递String值(而不是Decimal)作为参数时,不会抛出异常且 myField 的值为空
这是Soap Request示例
<soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<iss:myMethod>
<parameters>
<myField>test</myField>
</parameters>
</iss:myMethod>
</soapenv:Body>
</soapenv:Envelope>
如果传递不正确的数据类型,我如何让我的w抛出异常?
答案 0 :(得分:3)
看起来XSD Schema生成得很好,你缺少的是SchemaValidation注释,告诉JAX-WS用模式验证请求和响应。
只需将@SchemaValidation
添加到您的服务中:
@WebService(name = "myWs", targetNamespace = "someNamespace")
@SchemaValidation
@Local
public interface myWsPortType { ... }