2016-04-25 49 views
3

我想使用我用CXF創建的JAX-RS功能。如何在CXF中使用javax.ws.rs.core.Feature?

如果可能,我寧願使用JAX-RS功能(javax.ws.rs.core.Feature),而不使用CXF功能(org.apache.cxf.feature.Feature)。 我還希望使用SpringComponentScanServer(org.apache.cxf.jaxrs.spring.SpringComponentScanServer)來配置CXF,而不是必須手動創建服務器工廠或服務器。

這裏是我試過配置CXF:

import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider; 
import com.mycustomapp.restexception.providers.RestExceptionFeature; 
import org.apache.cxf.jaxrs.spring.SpringComponentScanServer; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.Import; 

@Configuration 
@Import(SpringComponentScanServer.class) 
public class CxfConfiguration 
{ 
    @Bean 
    public RestExceptionFeature restExceptionFeature() 
    { 
     return new RestExceptionFeature(); 
    } 

    @Bean 
    public JacksonJsonProvider jacksonJsonProvider() 
    { 
     return new JacksonJsonProvider(); 
    } 
} 

這裏是我的自定義功能:

import javax.ws.rs.core.Feature; 
import javax.ws.rs.core.FeatureContext; 
import javax.ws.rs.ext.Provider; 

@Provider 
public class RestExceptionFeature implements Feature 
{ 
    @Override 
    public boolean configure(FeatureContext context) 
    { 
     context.register(RestExceptionBodyReader.class); 
     context.register(RestExceptionMapper.class); 
     context.register(RestExceptionCxfClientMapper.class); 

     return true; 
    } 
} 

RestExceptionFeature.configure()永遠不會被調用。

回答

相關問題