0

使用 Jettison 提供程序。

 public Set getClasses() {
  Set s = new HashSet();
  s.add(DatabaseResource.class);
  return s;
  }
  public Set<Object> getSingletons() {
  Set s = new HashSet();
  JettisonJAXBProvider jaxbProvider = new JettisonJAXBProvider();
  jaxbProvider.setUseAsReader(true);
  jaxbProvider.setUseAsWriter(true);
  return s;
  }

服务器代码:

 @POST
 @Consumes(MediaType.APPLICATION_JSON)
 @Produces(MediaType.APPLICATION_JSON)
 public Book post(Book inMessage) {
  System.out.println("entered post method");
      Book outMessage = new Book();
      outMessage.setAuthur("Shiva:"+inMessage.getAuthur());
      outMessage.setBookId("500");
      outMessage.setBookName("SHIVA THE GREAT");

      return outMessage;

 }

客户代码:

Resource resource = client.resource("http://localhost:8080/CoeeServer/rest/book");

  Book book = new Book();
        book.setAuthur("author--Shiva.");
        book.setBookId("500");
        book.setBookName("Shiva the great");




        Book response1  = resource.contentType(MediaType.APPLICATION_XML).accept(MediaType.APPLICATION_XML).post(Book.class,book);

这是正确的调用方式吗?任何人都可以有任何建议。


我收到以下错误。

找不到类型 {0} 和媒体类型 {1} 的 javax.ws.rs.ext.MessageBodyWriter。验证所有实体提供者都已正确注册。

4

1 回答 1

1

我解决了我的问题。问题在于刚刚用@XmlRootElement 替换的jaxb 注释。这可能对其他人有所帮助,因此发布我的解决方案。

于 2010-12-07T15:50:06.387 回答