[英]java tool to create client-side stubs for REST service
假设我有一个REST Web服务的WADL,我已经能够在SoapUI中组合一堆请求(我对REST或SOAP并不陌生) - 而且我已经设法获得了wadl2java工具从我的WADL自动生成并编译类。
是否有任何教程演示如何使用这些类来访问我的REST Web服务? 理想情况下,我希望避免使用大型框架(Spring可能很好,但我现在希望将依赖项保持在最低限度)。
这个网址提供了使用wadl2java的提示,但是,似乎没有人提供在可行教程中实际使用工作产品的任何示例? 从CXF中的RESTful服务创建客户端Java类
编辑:我正在使用wadl2java maven插件,这很棒。 除了我发现的一个错误之外,它可以完美地生成(并编译)存根代码。 我将查看下面提供的一些答案并添加我的反馈。
编辑13 / Mar:
Maven cxf-wadl2java-plugin创建了文件:target \\ generated-sources \\ cxf \\ com \\ example \\ services \\ v2 \\ package-info.java:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.example.com/services/v2",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.example.services.v2;
看起来这不是我希望的简单解决方案。
作为参考,我得到的错误是: [com.sun.istack.SAXException2:无法编组类型“com.example.services.v2.ModelCriteria”作为元素,因为它缺少@XmlRootE lement注释]
我最终使用的代码:
JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
bean.setAddress("https://example.com/services/v2/rest");
bean.setUsername(...);
bean.setPassword(...);
bean.setResourceClass(ModelRestService.class);
bean.getOutInterceptors().add( new org.apache.cxf.interceptor.LoggingOutInterceptor() );
ModelRestService model = bean.create(ModelRestService.class);
ModelCriteria mc = oFact.createModelCriteria();
mc.setModelNumber("Test");
FindModelResult fmResult = model.findByCriteria(mc);
剩下的@XmlRootElement错误是因为我没有完全限定REST端点/ services / v2 / rest。
假设您使用CXF并且您具有服务端点BookStore
的生成类
BookStore store = JAXRSClientFactory.create("http://bookstore.com",
BookStore.class);
Books books = store.getAllBooks();
有关详细信息,请参阅以下链接
如果您确实知道maven,您可以使用wadl2java maven插件,这里有示例使用方法。
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-wadl2java-plugin</artifactId>
<version>2.7.6</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
<wadlOptions>
<wadlOption>
<wadl>${basedir}/src/main/resources/wadl/kp.wadl</wadl>
<impl>true</impl>
<packagename>com.kp.webservices.service</packagename>
<extraargs>
<extraarg>-supportMultipleXmlReps</extraarg>
</extraargs>
</wadlOption>
</wadlOptions>
</configuration>
<goals>
<goal>wadl2java</goal>
</goals>
</execution>
</executions>
</plugin>
Apache CXF可以做到这一点。
在这里,您可以找到如何从wadl生成工件以及如何将它们用作客户端。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.