如何在TomEE 7.0.0-M1中使用Jax RS启用Bean验证?

时间:2016-01-29 21:06:53

标签: java-ee jax-rs bean-validation tomee tomee-7

我知道我必须遗漏一些非常基本的观点。 以下资源方法:

@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public TestObject getObj(@QueryParam("m") String m,
                         @Min(30) @NotNull @QueryParam("d") Double d) {
    return new TestObject(m,m,d);
}

在Glassfish4中按预期工作(即返回400 Bad Request),但在TomEE 7.0.0-M1(jee7)中它忽略验证注释,并以200 OK响应。 我尝试设置属性(虽然在TomEE 7中默认设置为启用),但仍然没有。

org.apache.openejb.default.system.interceptors = org.apache.openejb.bval.BeanValidationAppendixInterceptor

我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

在M1中,我认为你需要在方法上添加@ValidateOnExecution,最新版本将其修复为IIRC

答案 1 :(得分:-1)

您必须在JAX-RS资源中添加@Singleton或@Stateless注释才能进行bean验证。对于非单例/非EJB资源的CXF,如果需要验证这些对象,则需要注册org.apache.cxf.jaxrs.validation.JAXRSBeanValidationInvoker。