找不到Java类型类myPackage.Sample和MIME媒体类型application/xml的消息正文编写器

找不到Java类型类myPackage.Sample和MIME媒体类型application/xml的消息正文编写器,java,spring,web-services,rest,Java,Spring,Web Services,Rest,我正在使用Jersey RESTful Web服务。我写的客户端如下,但它抛出了我在标题中提到的上述异常 public class MyRestClient { public static void main(String[] args) { Client client = Client.create(); WebResource resource = client.resource("http://localhost:8080/m

我正在使用Jersey RESTful Web服务。我写的客户端如下,但它抛出了我在标题中提到的上述异常

public class MyRestClient {
    public static void main(String[] args) {    
        Client client = Client.create();        
        WebResource resource = client.resource("http://localhost:8080/myapp/rest/a/update/123");    
        Sample b1 = new Sample("debris");     
        ClientResponse response = resource.type(MediaType.APPLICATION_XML).put(ClientResponse.class, b1);

    }
}

有人要求用@XmlRootElement注释示例类。但我不能这样做,因为样本是由第三方生成的。有什么帮助吗?

在没有看到REST服务类的情况下,回答这个问题有点困难,但我猜您正在尝试将数据作为服务中的示例对象使用,如下所示:

@PUT
public Response updateSample(Sample sample) {
...
但这依赖于Jersey能够自动将XML数据打包到一个示例对象中,正如您所指出的,这需要在示例类上使用JAXB注释,并且由于缺少这些注释,您将得到您描述的错误

相反,您可以在服务中将其作为字符串使用,如下所示:

@PUT
public Response updateSample(String sampleStr) {
...
但现在您负责将sampleStr数据解析为xml,并将其转换为示例对象(这不一定是坏事)。但是,由于示例类没有对XML进行注释,Jersey甚至无法将其转换为XML供客户端发送

有关使用Jersey REST服务来回传输数据的不同方法的更多信息,请参阅本文:

如果您将数据作为JSON传递,那么在服务器上手动处理数据可能会更容易。查看文章底部的JUnit测试类,了解如何实现这一点

如果您需要更多帮助,请包括您的服务级别