代码之家  ›  专栏  ›  技术社区  ›  Jonathan S. Fisher

JAX-RS客户端是否调用注册的ContextResolver?

  •  0
  • Jonathan S. Fisher  · 技术社区  · 7 年前

    裁判: https://www.ibm.com/support/knowledgecenter/en/SSAW57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/twbs_jaxrs_xmlcontent_jaxb.html

    我很难确定这是否在规范中,但假设我希望JAX-RS客户机使用一个自定义的JAXB上下文,我通常使用CDI来管理它:

    @ApplicationScoped
    public class JaxbContextResolver implements ContextResolver<JAXBContext> {
        @Inject
        private JAXBContext jaxbContext;
    
        @Override
        public JAXBContext getContext(Class<?> type) {
            return jaxbContext;
        }
    }
    

    申请代码:

    @Inject
    private JaxbContextResolver jaxbContextResolver;
    
    public void test() {
        Client client = ClientBuilder.newClient();
        client.register(jaxbContextResolver);
        client.target("https://example.com").request("application/xml").post(Enity.entity(payload, "application/xml"), Response.class);
    }
    

    我遇到的问题是,jax-rs客户端从未调用我的 jaxbContextResolver.getContext() 方法jax-rs客户机支持ContextResolver还是不在规范中?我确实注意到CXF试图使用ContextResolver,但它找不到我的:

    https://github.com/apache/cxf/blob/master/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java#L479

    0 回复  |  直到 7 年前
    推荐文章