簡體   English   中英

球衣是如何產生波動的,有沒有解決方案

[英]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);

或者,如果您以其他方式獲取StringInputStream ,則可以直接使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM