2015-01-12 2 views
0

Я пытаюсь использовать аннотацию @BeanParam от JAX-RS.@BeanParam не работает с Apache CXF 3.0.x

Он отлично работал с Apache cxf 2.7.7, но после обновления до Apache cxf 3.0.1 он не работает. В моем сервисе отдыха bean param равен null, и я получаю NullPointerException.

Я пробовал с cxf 3.0.3, но результат такой же.

Мой RestService выглядит

Class MyService { 
    @BeanParam 
    private MyBean params; 

    @Path("/test") 
    public Response testIt() { 
     // params is null here 
    } 
} 

class MyBean { 
    @QueryParam 
    private String message; 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public String getMessage() { 
     return this.message; 
    } 
} 

Моя зависимость в Gradle выглядит

def cxfVersion = "3.0.1" 

ext.libraries = [ 

cxf: [ 
    "org.apache.cxf:apache-cxf:$cxfVersion", 
    "org.apache.cxf:cxf-rt-frontend-jaxrs:$cxfVersion" 
] 

Кто-нибудь есть какие-либо идеи, что изменилось форма CXF 2.7.7 для CxF 3.0.x, что сделает это не работает.

ответ

0

Я нашел проблему. Это было связано с наличием еще одного cxf-версии jar, присутствующего в classpath (версия 2.3.3), исходящего из других зависимостей проектов. Так или иначе, что получило преимущество над версией 3.x, и у нее не было поддержки BeanParam.

Удаление этой банки из classpath сработало для меня.