Spring WebFault上的编组错误

Spring WebFault上的编组错误,spring,soap,cxf,Spring,Soap,Cxf,我有以下课程: @WebFault(faultBean="com.myapp.FaultBean", name="MyWSException", targetNamespace = "exception.myapp.com") public class MyWSException extends RuntimeException { /** * */ private static final long serialV

我有以下课程:

@WebFault(faultBean="com.myapp.FaultBean", name="MyWSException", targetNamespace = "exception.myapp.com")
    public class MyWSException extends RuntimeException {

        /**
         * 
         */
        private static final long serialVersionUID = 5911956366562576341L;

        private FaultBean faultBean;

        public MyWSException(String message, FaultBean faultBean) {
            super(message);
            this.faultBean = faultBean;
        }


        public MyWSException(String message, Throwable cause, FaultBean faultBean) {
            super(message);
            this.faultBean = faultBean;
        }

        public FaultBean getFaultInfo() {
            return faultBean;
        }
    }
这是我的FaultBean:

@XmlType(name="WSFaultType", namespace = "exception.myapp.com")
@XmlRootElement(name="MyWSException")
@XmlAccessorType(XmlAccessType.FIELD)
public final class FaultBean {


    @XmlElement(name="message", required=true)
    private String message;
    @XmlElement(name="code", required=true)
    private String code;

    public FaultBean(){
        super();
    }

    public FaultBean( String message, String code) {
        super();
        this.message= message;
        this.code = code;
    }



    public final String getMessage() {
        return message;
    }

    public final void setMessage(String message) {
        this.message= message;
    }

    public final String getCode() {
        return code;
    }

    public final void setCode(String code) {
        this.code = code;
    }

}
现在,我有两个AOP类,一个用于捕获所有自定义异常,另一个用于在提交事务时捕获Spring的异常,以便捕获持久层的所有意外错误:

@Aspect
public class SpringExceptionAspect {


    @Pointcut("execution(public * *(..))")
    private final void anyPublicOperation() {
    }

    @Pointcut("execution(void org.springframework.transaction.PlatformTransactionManager.commit(*))")
    public final void anyTransactionError() {
    }

    @AfterThrowing(pointcut = "anyPublicOperation() && anyTransactionError()", throwing = "error")
    public void catchException(JoinPoint jp, Throwable error) {
           FaultBean bean = new FaultBean(error.getMessage(), "ERRCODE");

        throw new MyWSException("Persistence error:", bean);
    }
}


@Aspect
public class CustomExceptionAspect{


    @Pointcut("execution(public * *(..))")
    private final void anyPublicOperation() {
    }

    @Pointcut("within(com.myapp.service..*)")
    public final void anyServerMethod() {
    }

    @AfterThrowing(pointcut = "anyPublicOperation() && anyServerMethod()", throwing = "error")
    public void catchException(JoinPoint jp, Throwable error) {
            FaultBean bean = new FaultBean(error.getMessage(), "ERRCODE");

            throw new MyWSException("Error:", bean);
    }


}
现在,当异常在第二个方面被捕获时(当我抛出我的自定义异常时),一切正常,我得到了预期的soap:fault响应。但是,当捕捉到Spring自己的事务异常时,我会得到以下响应:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Server</faultcode>
         <faultstring
Marshalling Error: neither class com.myapp.FaultBean nor any of its superclasses are known to this conext</faultstring>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>

soap:服务器