EJB 方法参数是否在 Java EE 容器中自动验证?

Are EJB method parameters validated automatically in a Java EE container?

我是 Java Bean Validation 的新手,所以我想了解它是如何工作的。
据我所知,在 Java EE 容器中,持久性提供程序使用 JPA 负责实体的验证,因此无需使用 Validator.
以编程方式进行验证 EJB 方法参数也会自动验证吗?

如果我有一个由 EJB 实现的 @Local 接口:

@Local
public interface ExampleLocal
{
    void doSomething(@NotNull String param);
}

然后我将 null 传递给上述方法:

public class Foo 
{
    @EJB
    private ExampleLocal example;

    public void callDoSomething()
    {
        example.doSomething(null);
    }
}

EJB 是否抛出 EJBException

似乎没有自动验证 EJB 方法参数。
我在 TomEE 中进行了测试,我不得不使用 Interceptor 来验证它们

@Interceptor
@Validable
public class ValidationInterceptor
{
    @Resource
    private Validator validator;
    
    @AroundInvoke
    private Object validate(InvocationContext ic) throws Exception
    {
        ExecutableValidator exVal = validator.forExecutables();
        Set<ConstraintViolation<Object>> violations =  exVal.validateParameters(ic.getTarget(),ic.getMethod(),ic.getParameters());
        if (!violations.isEmpty())
            throw new ConstraintViolationException(violations);
        return ic.proceed();
    }
}