假设我已经获得了一个REST webservice的WADL,并且已经能够在SoapUI中组合出一堆请求(我对REST或SOAP并不陌生),并且我已经成功地让wadl2java工具自动生成和编译了来自我的WADL的类。是否有任何教程演示如何使用这些类来访问我的REST webservice?我希望尽量避免使用大型框架(Spring可能很好,但我想暂时保持我的依赖最小化)。这个网址提供了一个提示,可以使用wadl2java,但是再次强调,没有人提供任何实际使用工作产品的可行教程示例?create client side java classes from a RESTful service in CXF
编辑:我正在使用wadl2java的maven插件,它非常棒。除了我发现的一个错误之外,它完美地生成(和编译)存根代码。我将查看下面提供的一些答案并添加我的反馈。
剩下的@XmlRootElement错误是因为我没有完全限定REST端点/services/v2/rest。
编辑于3月13日:
Maven的cxf-wadl2java插件创建了文件: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”作为元素进行编排,因为它缺少@XmlRootElement注释]
最终使用的代码:
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。