Jakarta ee EJB方法参数是否在JavaEE容器中自动验证?

Jakarta ee EJB方法参数是否在JavaEE容器中自动验证?,jakarta-ee,ejb,bean-validation,Jakarta Ee,Ejb,Bean Validation,我不熟悉JavaBean验证,所以我正在尝试了解它是如何工作的。 据我所知,在JavaEE容器中,持久性提供者通过JPA负责实体的验证,因此无需使用验证器以编程方式进行验证 EJB方法参数是否也会自动验证? 如果我有一个由EJB实现的@Local接口: @Local 公共接口示例本地 { void doSomething(@NotNull字符串参数); } 我将null传递给上述方法: 公共类Foo { @EJB 私人示例本地示例; public void callDoSomething()

我不熟悉JavaBean验证,所以我正在尝试了解它是如何工作的。
据我所知,在JavaEE容器中,持久性提供者通过JPA负责实体的验证,因此无需使用
验证器以编程方式进行验证
EJB方法参数是否也会自动验证?

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

@Local
公共接口示例本地
{
void doSomething(@NotNull字符串参数);
}
我将
null
传递给上述方法:

公共类Foo
{
@EJB
私人示例本地示例;
public void callDoSomething()
{
例如:剂量测定法(空);
}
}

EJB是否抛出一个
EJBException

似乎EJB方法参数没有自动验证。
我在TomEE中进行了测试,我必须使用拦截器来验证它们

@拦截器
@有效的
公共类验证接收器
{
@资源
私人验证器;
@阿隆登沃克
私有对象验证(InvocationContext ic)引发异常
{
ExecutableValidator exVal=validator.forExecutables();
设置冲突=exVal.validateParameters(ic.getTarget(),ic.getMethod(),ic.getParameters());
如果(!inflictions.isEmpty())
抛出新的ConstraintViolationException(违规);
返回ic.procedure();
}
}

似乎EJB方法参数不会自动验证。
我在TomEE中进行了测试,我必须使用拦截器来验证它们

@拦截器
@有效的
公共类验证接收器
{
@资源
私人验证器;
@阿隆登沃克
私有对象验证(InvocationContext ic)引发异常
{
ExecutableValidator exVal=validator.forExecutables();
设置冲突=exVal.validateParameters(ic.getTarget(),ic.getMethod(),ic.getParameters());
如果(!inflictions.isEmpty())
抛出新的ConstraintViolationException(违规);
返回ic.procedure();
}
}