我想在解组之前验证对Soap API的传入请求,以便可以发送响应用户的消息而不是cxf statndard解组错误。为此,我创建了一个拦截器,如下所示:
public class ValidationInterceptor extends AbstractSoapInterceptor {
private Logger logger = Logger.getLogger(ValidationInterceptor.class);
public ValidationInterceptor() {
super(Phase.READ);
}
@Override
public void handleMessage(SoapMessage soapMessage) throws Fault {
DummyEntity entity = (DummyEntity) soapMessage.getContent(DummyEntity.class);
}
}
但是实体对象为null。如何在实体对象中获取请求?这些实体对象是通过cxf生成的。
我已经在我的服务中注册了拦截器,如下所示:
@javax.jws.WebService(serviceName = "DummyService", portName = "DummySOAP", targetNamespace = "http://dummy", wsdlLocation = "file:dummy.wsdl", endpointInterface = "com.swte.dummy.Dummy")
@InInterceptors(classes = {com.swte.dummy.soap.util.ValidationInterceptor.class})
public class DummySOAPImpl implements Dummy {
我尝试在不同阶段注册拦截器,例如'PRE_MARSHAL',但响应仍然相同。
请向我介绍一些有关如何在拦截器中获取请求,对其进行验证并引发自定义异常消息的信息。
我在SO上引用了以下链接: Jax-Ws Unmarshalling Error
在此示例中,建议在拦截器内部注册一个验证器。但是“消息”对象没有方法setContextualProperty()。
我已参考以下链接: https://blog.codecentric.de/en/2016/06/spring-boot-apache-cxf-xml-validation-custom-soap-faults/
但仍未获取请求对象。
我已引用以下链接: http://cxf.apache.org/docs/validationfeature.html
,但没有有关如何设置自定义消息的示例