在独立应用程序中支持Jersey Client中的XML

时间:2015-04-02 13:17:29

标签: jaxb jersey jax-rs jersey-2.0 jersey-client

我有一个独立的应用程序,可以连接到这样的RESTful API:

Client client = ClientBuilder.newClient();
WebTarget target = client.target(hostWithPort).path(apiConfig.getUrl());

CreateReq request = new CreateReq();//this is annotated with @XmlRootElement

CreateResult result = target
      .request(MediaType.TEXT_XML_TYPE)
      .post(Entity.entity(request, MediaType.TEXT_XML_TYPE), CreateResult.class);

问题是我得到以下MessageBodyProviderNotFoundException

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=text/xml, type=class com.mydomain.communication.CreateReq., genericType=class com.mydomain.communication.CreateReq.

根据Jersey Documentation,必须已经支持JAXB提供程序,但不知何故它找不到它。我想我错过了我的maven中的依赖项以及我的代码中的一些提供程序注册。在我的pom.xml中,我只依赖于org.glassfish.jersey.core -> jersey-client

1 个答案:

答案 0 :(得分:2)

是的,我认为jersey-client依赖关系并没有引入所需的jersey-media-jaxb。似乎从2.16起开始。

the migration guide

中所述
  

<强> 27.2。从泽西岛2.15迁移到2.16

     

27.2.1.1。 JAX-B提供者与核心分离

     

从版本2.16开始,所有JAX-B提供程序都捆绑在一个单独的模块中。