Dubbox 构建Restful服务

来源:互联网 发布:cloudzoom.js 编辑:程序博客网 时间:2024/06/07 16:37

Facade

@Path("/sysUserService")@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})@Produces({ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8})public interface SysUserFacade {    @GET    @Path("/testget")    public void testget();    @GET    @Path("/getUser")    public SysUser getUser();    @GET    @Path("/get/{id : \\d+}")    public SysUser getUser(@PathParam(value = "id") Integer id);    @GET    @Path("/get/{id : \\d+}/{name}")    public SysUser getUser(@PathParam(value = "id") Integer id, @PathParam(value = "name") String name);    @POST    @Path("/testpost")    public void testpost();    @POST    @Path("/postUser")    public SysUser postUser(SysUser user);    @POST    @Path("/post/{id}")    public SysUser postUser(@PathParam(value = "id") String id);}

实现类

@Service("sysUserService")@com.alibaba.dubbo.config.annotation.Service(interfaceClass=bhz.sys.facade.SysUserFacade.class, protocol = {"rest", "dubbo"})public class SysUserService implements SysUserFacade {    public SysUser getUser() {        //http://localhost:8888/bhz-sys-service/sysUserService/getUser        SysUser user = new SysUser();        user.setId("1001");        user.setName("张三");        return user;    }    public SysUser getUser(Integer id) {        SysUser user = new SysUser();        user.setId("1001");        user.setName("张三");        return user;    }    public SysUser getUser(Integer id, String name) {        SysUser user = new SysUser();        user.setId("1001");        user.setName("张三");        return user;    }    public SysUser postUser(SysUser user) {        user1.setName("张三");        return user1;    }    public SysUser postUser(String id) {        SysUser user = new SysUser();        user.setId("1001");        user.setName("张三");        return user;    }}

dubbo-provider.xml

<!-- 引入配置文件 -->    <context:property-placeholder location="classpath:config.properties" />    <dubbo:application name="${dubbox.application}" owner="programmer" organization="dubbox"/>    <!-- zookeeper注册中心 -->    <dubbo:registry address="${dubbox.registry.address}" timeout="100000"/>    <dubbo:annotation package="bhz.sys.service" />    <!-- kryo实现序列化 -->    <dubbo:protocol name="dubbo" serialization="kryo" optimizer="bhz.sys.serial.SerializationOptimizerImpl" />    <!-- rest -->    <dubbo:protocol name="rest" server="${dubbox.rest.server}" port="${dubbox.rest.port}" contextpath="${dubbox.rest.contextpath}" threads="${dubbox.rest.threads}" accepts="${dubbox.rest.accepts}" />    <bean id="sysUserService" class="bhz.sys.service.SysUserService" />    <dubbo:service interface="bhz.sys.facade.SysUserFacade" ref="sysUserService" protocol="rest,dubbo" />

小结

  • 提供restful接口,不仅可以为web端提供数据,也可以为手机端提供数据。