我有mule消息过滤器来验证针对模式的SOAP请求,
我的问题是:
如何记录'哪个元素具有解析异常(cvc-complex-type)的错误详细信息。因为catch块总是在抛出异常细节:“消息已被过滤器拒绝”。我怎么能显示确切的异常?以便用户根据要求输入正确的数据。
答案 0 :(得分:0)
将customfilterclass写为SchemaValidationfilter的子项。
覆盖接受方法并抛出soap fault。
public class CustomSchemaValidationFilter extends SchemaValidationFilter {
@Override
public boolean accept(MuleMessage muleMessage) {
return validateBody(muleMessage);
}
public boolean validateBody(MuleMessage message) throws Fault {
Source source = null;
try {
source = loadSource(message);
} catch (Exception e) {
throw getFaultObj(e);
}
try {
createValidator().validate(source);
} catch (SAXException e) {
throw getFaultObj(e);
} catch (IOException e) {
throw getFaultObj(e);
}
return true;
}
private Fault getFaultObj(Exception e) {
return new SoapFault(e.getMessage(), e, new QName(
DEFAULT_SCHEMA_LANGUAGE));
}
}
//并在标签后添加mule flow以验证过滤器。
<custom-filter class="org.mule.module.xml.filters.CustomSchemaValidationFilter">
<spring:property name="schemaLocations" value="${approvalHistorySchemaLocation}" />
</custom-filter>**