[英]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.