Java Karaf中的CXF:如何在子资源上配置bean验证(最好使用Blueprint)?

Java Karaf中的CXF:如何在子资源上配置bean验证(最好使用Blueprint)?,java,cxf,bean-validation,karaf,blueprint-osgi,Java,Cxf,Bean Validation,Karaf,Blueprint Osgi,我在Karaf中使用了CXF的Dinamics特性,并且面临着Bean验证不适用于子资源的问题。 例如,在以下代码中: @Path("services") public interface Service { @Path("{id}/orders") public Order getOrderForService(@PathParam("id") int serviceId); }

我在Karaf中使用了CXF的Dinamics特性,并且面临着Bean验证不适用于子资源的问题。 例如,在以下代码中:

@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验证工作正常,但当它作为服务的子资源调用时,bean验证不工作

我发现了一个问题

你在哪里说的

这不是一个bug-JAXRSBeanValidationInvoker可以处理它

注意JAXRSBeanValidationInterceptor也是一个ContainerRequestFilter,因此您可以将其注册为JAX-RS提供程序,但具有讽刺意味的是,由于匹配后请求筛选器不能应用于定位器,因此不能用于验证定位器。。。因此,注册自定义调用程序也是验证子资源定位器的唯一方法

我把这篇文章涂红了

但它并没有描述如何使用Blueprint配置调用程序

所以问题是:如何使用Blueprint在Karaf中的CXF子资源上配置bean验证?
或者有其他方法可以做到这一点吗?

我真的认为,如果您在Camel blueprint中使用Camel CXF和Camel bean验证,您的生活会变得更加轻松。Camel的学习曲线实际上没有什么,它与Karaf和(Camel)Blueprint一起工作得非常好。使用这两种方法应该可以解决您的问题。您可以通过从camel blueprint原型创建新项目来签出示例。似乎还有一个带有blueprint的camel cxf原型。如果你看看这些选项,它们看起来很吸引人,我相信你需要的是一个动态路由器,它只是一个路由器,根据你给它的任何规则路由到端点

Camel-CXF教程

希望我能正确理解你的问题,这可能会有所帮助