2013-03-15 71 views
1

我需要使用REST服務,該服務具有相對簡單和固定(意味着可預測性不是非常差異的結構),但我無法在其站點上的任何位置找到WADL。我以前曾使用SOAP服務,它有一個體面的WSDL,我用它來生成我的客戶端應用程序使用Axiom2編組服務數據的Java類。消費不提供WADL的REST服務

我的問題是:是否有一種簡單的方法來反向工程化一個WADL,如果該網站缺少一個使用JAX-RS(例如Jersey)的某些實現來輕鬆生成相應的Java類?另外一個問題是:只給予REST服務,沒有WADL和某種形式的JAX-RS,在客戶端生成編組類的最簡單方法是什麼?

目前,由於結構很簡單,我使用Java SE(org.w3c.dom)中的直接DOM來解析文檔很困難。它工作正常,但我不喜歡在文檔結構中必須進行的所有遍歷操作,並且我覺得我已經徹底改變了方向盤。我確信有一種更優雅的方式。

回答

1

如果你只是這樣做一次,爲什麼不只是手工做?如果您需要定期進行此操作,那麼您可能會遇到WADL(請參閱:https://softwareengineering.stackexchange.com/questions/133145/should-i-use-wadl-to-describe-my-restful-api)。

你只是試圖從服務中爲DTO生成Java類嗎?在這種情況下,您可以從服務中獲取一些示例XML,並使用它來生成可能的XSD(可能使用trang)。然後使用XJC生成相應的Java類。

0

如果REST服務在Jersey中實現,Jersey應該在運行時自動生成WADL。默認位置是http://server:port/appcontextroot/application.wadl。如果REST服務使用其他實現(例如RESTEasy),那麼您運氣不好。 https://issues.jboss.org/browse/RESTEASY-166

+0

其實,我在想用Jersey來消費,而不是實現這個服務。在客戶端 – amphibient 2013-03-16 03:46:21