【问题标题】:CXF in Karaf: how to configure bean validation on subresources (preferably using Blueprint)?Karaf 中的 CXF:如何在子资源上配置 bean 验证(最好使用蓝图)?
【发布时间】: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


    【解决方案1】:

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

    https://camel.apache.org/cxf.html https://camel.apache.org/bean-validation.html

    Camel-CXF 教程 https://camel.apache.org/better-jms-transport-for-cxf-webservice-using-apache-camel.html

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-24
      • 2017-11-15
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      相关资源
      最近更新 更多