【问题标题】:Mule apiKitGlobalExceptionMapping ValidationException not being thrownMule apiKitGlobalExceptionMapping ValidationException 没有被抛出
【发布时间】:2016-10-13 01:32:47
【问题描述】:

在处理 apiKit 路由消息时,我正在使用验证组件来验证 mule 消息中的关键数据。

我期待我的异常类被引发,我可以在 api kit 全局异常组件中捕获它,但异常总是以 org.mule.api.MessagingException 的形式出现,而不是我的自定义类。

我需要做什么才能让验证组件中的异常在 api kit 全局异常组件中分离出来?下面是我的验证异常组件:

package com.comMyAppy.rules;
import com.comMyAppy.rules.MyAppValidationException;
import org.mule.api.MuleEvent;
import org.mule.extension.validation.api.ExceptionFactory;
import org.mule.extension.validation.api.ValidationResult;

public class MyAppValidationExceptionFactory implements ExceptionFactory
{

    @SuppressWarnings("unchecked")
    @Override
    public <T extends Exception> T createException(ValidationResult result,
            Class<T> exceptionClass, MuleEvent event)
    {
        // TODO Auto-generated method stub
        return (T) new MyAppValidationException(result, event);
    }

    @Override
    public Exception createException(ValidationResult result,
            String exceptionClassName, MuleEvent event)
    {
        // TODO Auto-generated method stub
        return new MyAppValidationException(result, event);
    }

}

这是我的异常类:

package com.comMyAppy.rules;
import org.mule.api.MuleEvent;
import org.mule.config.i18n.Message;
import org.mule.extension.validation.api.ValidationException;
import org.mule.extension.validation.api.ValidationResult;
@SuppressWarnings("serial")
public class MyAppValidationException extends ValidationException
{

    public MyAppValidationException(ValidationResult validationResult,
            MuleEvent event)
    {
        super(validationResult, event);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected String generateMessage(Message message)
    {
        return "VALIDATION:" + message.getMessage();
    }

}

我做错了什么?

【问题讨论】:

  • 注意我正在使用验证:所有组件
  • 可以分享一下验证配置吗?
  • 我发现所有验证器都在吃我想要抛出的自定义异常

标签: validation mule apikit


【解决方案1】:

我发现我的问题是什么:我使用了 validation:all 组件,它只是聚合了所有不同验证器之间的所有消息,并有效地抛出了 messageException,而忽略了我的验证配置。我的建议:避免使用所有验证器。听起来不错,但你失去了自定义异常能力。

【讨论】:

  • 你如何避免它?你用了什么替代品?
  • 嘿@ItzHoudini 我最终只是分别列出了我在 ALL 验证器中拥有的每个验证器。它在 xml 中看起来很好,在 WISWIG 编辑器中看起来很糟糕,但至少它可以按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-26
  • 2018-07-31
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多