JAX-RS客户端会调用已注册的ContextResolver吗?

时间:2018-10-26 16:43:23

标签: java jax-rs cxf cdi tomee

参考: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客户端使用我通常通过CDI管理的自定义JAXB上下文:

@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 [s]还是在规范中不支持?我确实注意到CXF尝试使用ContextResolver,但找不到我的:

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

0 个答案:

没有答案