我有一个独立的应用程序,可以连接到这样的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
答案 0 :(得分:2)
是的,我认为jersey-client
依赖关系并没有引入所需的jersey-media-jaxb
。似乎从2.16起开始。
<强> 27.2。从泽西岛2.15迁移到2.16
27.2.1.1。 JAX-B提供者与核心分离
从版本2.16开始,所有JAX-B提供程序都捆绑在一个单独的模块中。