Apache CXF实现的RESTful形式的webservices
我在上一篇文章(http://www.zifangsky.cn/2016/03/apache-cxf实现的soap形式的webservices/)中说了下如何实现SOAP方式的web service,这篇文章将继续说明如何实现RESTful形式的web service
(1)项目结构:
在这里,我没有新建一个项目,而是在上一个项目的基础上实现的,具体来说就是新建了3个文件,如下图所示:
其中,User类是一个普通的实体类,RestService和RestServiceImpl类分别表示服务接口和它的实现类
(2)User.java:
packagecn.zifangsky.entity;importjavax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name="userInfo")publicclassUser{privateintid;privateStringname;privateStringcontact;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetContact(){returncontact;}publicvoidsetContact(Stringcontact){this.contact=contact;}}
(3)RestService.java:
packagecn.zifangsky.service;importjavax.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.PathParam;importjavax.ws.rs.Produces;importjavax.ws.rs.core.MediaType;importcn.zifangsky.entity.User;publicinterfaceRestService{@GET@Path(value="/user/{id}")@Produces(value={MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})publicUsergetUser(@PathParam("id")intid);}
(4)RestServiceImpl.java:
packagecn.zifangsky.service.impl;importcn.zifangsky.entity.User;importcn.zifangsky.service.RestService;publicclassRestServiceImplimplementsRestService{publicUsergetUser(intid){Useruser=newUser();user.setId(id);user.setName("zifangsky");user.setContact("http://www.zifangsky.cn");returnuser;}}
(5)web.xml不变,修改service-beans.xml:
添加<jaxrs:server></jaxrs:server>节点,表示是RESTful服务
<jaxrs:serverid="userRest"address="/services/rest"><jaxrs:serviceBeans><beanclass="cn.zifangsky.service.impl.RestServiceImpl"/></jaxrs:serviceBeans><jaxrs:extensionMappings><entrykey="json"value="application/json"/><entrykey="xml"value="application/xml"/></jaxrs:extensionMappings></jaxrs:server>
添加之后,service-beans.xml这个文件的完整代码是:
<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:jaxws="http://cxf.apache.org/jaxws"xmlns:jaxrs="http://cxf.apache.org/jaxrs"xmlns:soap="http://cxf.apache.org/bindings/soap"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/jaxwshttp://cxf.apache.org/schemas/jaxws.xsdhttp://cxf.apache.org/jaxrshttp://cxf.apache.org/schemas/jaxrs.xsd"><beanid="outLoggingInterceptor"class="org.apache.cxf.interceptor.LoggingOutInterceptor"/><beanid="loggingFeature"class="org.apache.cxf.feature.LoggingFeature"/><beanid="inLoggingInterceptor"class="org.apache.cxf.interceptor.LoggingInInterceptor"/><jaxws:serverid="sayHelloServices"serviceClass="cn.zifangsky.service.CXFService"address="/services/soap"><jaxws:serviceBean><beanclass="cn.zifangsky.service.impl.CXFServiceImpl"/></jaxws:serviceBean><jaxws:outInterceptors><refbean="outLoggingInterceptor"/></jaxws:outInterceptors><jaxws:inInterceptors><refbean="inLoggingInterceptor"/></jaxws:inInterceptors><jaxws:features><refbean="loggingFeature"/><wsa:addressingxmlns:wsa="http://cxf.apache.org/ws/addressing"/></jaxws:features></jaxws:server><jaxrs:serverid="userRest"address="/services/rest"><jaxrs:serviceBeans><beanclass="cn.zifangsky.service.impl.RestServiceImpl"/></jaxrs:serviceBeans><jaxrs:extensionMappings><entrykey="json"value="application/json"/><entrykey="xml"value="application/xml"/></jaxrs:extensionMappings></jaxrs:server></beans>
(6)测试:
整个配置到这里已经就完成了,在tomcat中启动项目,效果是这样:
在浏览器中访问:http://localhost:8080/CXFDemo/services/rest/user/9
可以看出,结果是正确,到此全部配置结束
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。