我正在使用澤西島1.1(舊,我知道 - 必須因爲我與Java 1.5卡住)。我正在做一個簡單的GET,其中一個Java對象作爲實體返回。 Java對象正在被正確編組(Java到XML),因爲我可以通過Web發出GET請求,並且它工作得很好。我正在嘗試使用Jersey客戶端發出GET請求並將它解組回Java對象,這就是它失敗的地方。不應該知道如何將它從GET請求收到的XML解組到POJO中,因爲它的註釋是正確的?它在服務器端工作。這裏的例外,我得到:澤西島Java客戶端消息正文閱讀器未找到Java類型
ClientHandlerException: A message body reader for Java type, class my.class.SearchResult, and MIME media type, application/xml was not found.
這裏的客戶端代碼:
private SearchResult search() {
WebResource wr = new Client().resource("http://localhost:8080/MyProject/search");
return wr.get(SearchResult.class);
}
這裏的JAXB註釋的POJO我使用的客戶端和服務器上:
@XmlRootElement(name = "searchResults")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "searchResults", propOrder = {
"results"
})
public class SearchResult {
@XmlElement(name = "result")
private List<Result> results = new ArrayList<Result>();
public List<Result> getResults() {
return results;
}
...
}
這裏的內結果也是POJO:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "resultType", propOrder = {
"name",
"version",
"type"
})
public class Result {
private String name;
private String version;
private String type;
...
}
以下是GET服務本身:
@Path("/search")
public class SearchRest {
@GET
@Produces(MediaType.APPLICATION_XML)
public SearchResult search() {
SearchResult result = new SearchResult();
....
return result;
}
}
謝謝!
你可以提供你的'Result'類嗎? –
我編輯了結果類的帖子 – billsfan80
可能自己找到了解決方案。我認爲把jaxb罐放在我的classpath中解決了它。我沒有收到任何錯誤表明他們不在那裏,但我的猜測是@XmlRootElement註釋在運行時被忽略,因爲我的類路徑中沒有jaxb jar。對此有何想法? – billsfan80