2010-12-03 8 views
0

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

サーバコード:

@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が見つかりませんでした。すべてのエンティティプロバイダが正しく登録されていることを確認します。

答えて

1

私の問題を解決しました。問題はjaxbアノテーションが@XmlRootElementに置き換えられたことでした。これは他の私の私のソリューションを投稿するのに役立ちます。