裁判: 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,但它找不到我的:
jaxbContextResolver.getContext()
https://github.com/apache/cxf/blob/master/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java#L479