[英]How jersey generate the wadl, are there a scheme for this
我想解析一個由jersey生成的.wadl文件。 但是我不知道jersey如何生成wadl文件,並且jersey是否使用了方案文件。 實際上,我想找到方案文件並使用xmlBeans來解析wadl文件。 我想知道還有其他方法可以做到這一點。 我將不勝感激!
最簡單的方法是查看生成wadl響應的資源類 。 您將看到它用作表示形式的模型類是com.sun.research.ws.wadl.Application
,它是JAXB生成的類。 如果查看包含的包 ,您將看到所有其他模型類,它們構成了完整的wadl模型。
因此,由於這些是JAXB類,因此您可以使用Application
類作為根模型類型來使用JAXB解組響應。
如果您使用的是Jersey客戶端,則可以直接從Response
解組到Application
Response response = target("application.wadl").request("application/xml").get();
Application wadlApp = response.readEntity(Application.class);
或者,如果您以其他方式獲取String
或InputStream
,則可以直接使用JAXB來解組
String wadlString = ...
JAXBContext context = JAXBContext.newInstance(Application.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Application wadlApp = (Application)unmarshaller.unmarshal(new StringReader(wadlString));
這種方法的問題在於,這些類包含在jersey-server
工件中。 您可能不希望此負載為正在執行的任何操作。
您也可以嘗試使用xjc自己通過wadl.xsd Jersey的使用來生成JAXB類。 我想您會得到與Jersey所使用的模型類不同的模型。 這樣,您無需依賴jersey-server
。
因此,我剛剛使用上面的wadl.xml對xjc進行了測試,以生成JAXB類,並且它可以工作。 它產生與Jersey相同的類
// maven directory structure (src/main/java)
xjc -d src/main/java -p com.stackoverflow.jersey.wadl.test wadl.xsd
然后,您可以僅使用上面的JAXB示例來解組使用生成的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.