2016-03-02 24 views
2

我在Karaf中使用CXF的Dinamics特性,並面臨Bean Validation不適用於子資源的問題。 例如在下面的代碼:Karaf中的CXF:如何在子資源上配置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); 
} 

下訂單時根資源,Bean驗證工作正常,但是當它被援引作爲服務的一個子資源,豆驗證不起作用。

我發現一個問題CXF-6297

這裏說,

這是不是一個錯誤 - JAXRSBeanValidationInvoker可以照顧它。

注意JAXRSBeanValidationInInterceptor也是一個ContainerRequestFilter - 因此您可以將其註冊爲JAX-RS提供程序,但具有諷刺意味的是,考慮到匹配後請求過濾器無法應用於定位器,因此無法用於驗證定位器。 ..所以註冊自定義調用是唯一的方式去得到驗證子資源定位符太

,我已經紅了文章about Invokers

,但它並沒有描述如何使用藍圖配置一個調用。

所以問題是:如何使用藍圖在Karaf的CXF的子資源上配置bean驗證? 或者可能有另一種方式來做到這一點?

回答

0

如果您使用Camel CXF和Camel bean驗證駱駝藍圖,我真的認爲您的生活會變得更容易。駱駝的學習曲線幾乎沒有什麼變化,並與卡拉夫和(駱駝)藍圖完美搭配。使用這兩種方法應該可以解決您的問題。您可以通過從駱駝藍圖原型創建新項目來查看樣本。它也似乎有一個與藍圖的駱駝cxf的原型。如果你看看這些選項,他們似乎很吸引人,我相信你需要的是一個動態路由器,它只是一個路由器,根據你給它的任何規則路由到終點。

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

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

希望我正確理解你的問題,這可能會有幫助。

相關問題