如何显示错误数据类型的自定义错误消息,而不是解组错误?

时间:2018-08-23 07:51:53

标签: cxf jax-ws

我想在解组之前验证对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

,但没有有关如何设置自定义消息的示例

0 个答案:

没有答案