如何在CXF中使用javax.ws.rs.core.Feature?

时间:2016-04-25 04:36:22

标签: java spring jax-rs cxf

我想使用我用CXF创建的JAX-RS功能。

如果可能,我更愿意使用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()永远不会被调用。

1 个答案:

答案 0 :(得分:0)

创建的机票https://issues.apache.org/jira/browse/CXF-6879 我的代码在发布时应该在CXF 3.1.7中有效。

如果我使用来自http://repository.apache.org/snapshots/

的CXF 3.1.7-SNAPSHOT或CXF 3.2.0-SNAPSHOT,它现在正在工作