【发布时间】:2016-06-15 00:44:09
【问题描述】:
我在 Karaf 中使用 CXF 的动态特性,并遇到 Bean Validation 不适用于子资源的问题。 例如。在以下代码中:
@Path("services")
public interface Service {
@Path("{id}/orders")
public Order getOrderForService(@PathParam("id") int serviceId);
}
@Path("orders")
public interface Order {
@POST
Product getProduct(@NotNull @Valid Product product);
}
当 Order 是根资源时,bean 验证工作正常,但是当它作为 Service 的子资源调用时,bean 验证不起作用。
我发现了一个问题CXF-6297
哪里说的
这不是错误 - JAXRSBeanValidationInvoker 可以解决它。
注意 JAXRSBeanValidationInInterceptor 也是一个 ContainerRequestFilter - 因此您可以将其注册为 JAX-RS 提供者,但具有讽刺意味的是,鉴于不能将匹配后请求过滤器应用于定位器,它不能用于验证定位器。 . 因此,注册自定义调用程序是验证子资源定位器的唯一方法
我已经把文章红了about Invokers
但它没有描述如何使用蓝图配置 Invoker。
所以问题是:如何使用蓝图在 Karaf 的 CXF 子资源上配置 bean 验证? 或者可能有其他方法可以做到这一点?
【问题讨论】:
标签: java cxf bean-validation karaf blueprint-osgi