02-RPCServer: 一个简单的RPC demo

本章是一个初学的简单demo
以后的目标就是逐步把这个demo完善

RPCServer-一个简单的RPC demo


本demo包含的内容:

  • RPCClient + RPCServer
  • RPCClient + RPCServer均用netty框架
  • RPCServer 端使用Spring扫描服务
  • RPCClient 通过proxy调用服务
  • 使用protostuff序列化与反序列化请求和响应
  • -

1.protostuff
在网络传输中离不开序列化与反序列化. 在java中, 序列化就是指将java对象转化为二进制数据, 反序列化就是将二进制数据恢复成java对象. 序列化对象的方式有很多种, 比如protobuf, 将对象转化为json, xml 以及protostuff等等方法, 而protostuff因为性能好, 序列化后的体积小, 使用方便等等有点而广受采用. 使用方法:
*添加maven依赖

    <dependency>
        <groupId>io.protostuff</groupId>
        <artifactId>protostuff-core</artifactId>
        <version>1.5.3</version>
    </dependency>

    <dependency>
        <groupId>io.protostuff</groupId>
        <artifactId>protostuff-runtime</artifactId>
        <version>1.5.3</version>
    </dependency>

*序列化和反序列化方法

    @SuppressWarnings("unchecked")
    public static <T> byte[] serilize(T msg) {
        Class<T> tClass = (Class<T>) msg.getClass();
        Schema<T> schema = RuntimeSchema.getSchema(tClass);

        LinkedBuffer buffer = LinkedBuffer.allocate();
        final byte[] bytes;
        try {
            bytes = ProtostuffIOUtil.toByteArray(msg, schema, buffer);
        } finally {
            buffer.clear();
        }
        return bytes;
    }


    public static <T> T deserialize(byte[] bytes, Class<T> clazz) {
        Schema<T> schema = RuntimeSchema.getSchema(clazz);
        T msg = schema.newMessage();
        ProtostuffIOUtil.mergeFrom(bytes, msg, schema);
        return msg;
    }

2.Spring扫描Service
*RPCService注解

// 该注解用于标注一个RPCService类, Spring通过扫描该注解来生成service bean
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RPCService {
    Class<?> value();
}

*service_context.xml配置文件
Spring的配置文件, component-scan标识Spring要扫描的的包, 默认情况下, Spring 只扫描@Component @Controller @Service这些Spring定义的注解. include-filter标签可以添加扫描的注解类型.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值