2010-12-03 38 views
0

Utilisation du fournisseur Jettison.apache wink 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; 
    } 

Code Serveur:

@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; 

} 

Code client:

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); 

Est-ce la bonne façon d'appeler? Quelqu'un peut-il avoir des suggestions.


Je reçois l'erreur suivante.

Aucun javax.ws.rs.ext.MessageBodyWriter trouvé pour le type {0} et le type de média {1}. Vérifiez que tous les fournisseurs d'entités sont correctement enregistrés.

Répondre

1

J'ai résolu mon problème. Le problème était avec les annotations jaxb juste remplacées par @XmlRootElement. Cela peut aider les autres à poster ma solution.