Java 将原始消息附加到SOAP错误

Java 将原始消息附加到SOAP错误,java,web-services,soap,cxf,Java,Web Services,Soap,Cxf,我在处理outFaultInterceptor的故障时遇到问题。任务是将原始消息附加到故障详细信息,如 public void handleMessage(SoapMessage msg) throws Fault { RequestData requestData = new RequestData(); //SOAPMessage is anyType in RequestData WSDL type //HERE I SET THE ORIGINAL MESSA

我在处理outFaultInterceptor的故障时遇到问题。任务是将原始消息附加到故障详细信息,如

public void handleMessage(SoapMessage msg) throws Fault {

    RequestData requestData = new RequestData();

    //SOAPMessage is anyType in RequestData WSDL type
    //HERE I SET THE ORIGINAL MESSAGE
    requestData.setSOAPMessage(msg.getExchange().getInMessage());
    /////////////////////////////////////////////////////////////

    ErrorContext ctx = new ErrorContext();
    //(...)
    ctx.setRequestData(requestData);

    ErrorInfoDetails errorDetails = new ErrorInfoDetails();
    errorDetails.setErrorMessage("Custom error message");
    errorDetails.setErrorCode("Custom error code");
    errorDetails.setErrorID("Custom error ID");
    errorDetails.setSeverity(ServerityType.CRITICAL);
    errorDetails.setErrorContext(ctx);

    ErrorInfo error = new ErrorInfo("Custom fault string", errorDetails);

    Fault fault = new Fault(error);

    msg.setContent(Exception.class, fault);
}
如果我像上面那样添加它,在回复消息中,RequestData是空的

如果我加上

    SAAJStreamWriter messageWriter = (SAAJStreamWriter) msg.getExchange()
            .getInMessage().get("org.apache.cxf.staxutils.W3CDOMStreamWriter");
    RequestData requestData = new RequestData();
    requestData.setSOAPMessage(messageWriter.toString());
它将被添加为CDATA。 我很确定,新创建的错误消息和原始消息中的名称空间存在冲突。是否有一些简洁的方法或实用程序使它们保持一致