基于Spring的HttpInvoker实现改写 egova_invoker

Apache 2.0
Java 查看源码»
跨平台
2016-07-14
开源中国股瞎
egova_invoker 正在参加 2019 年度最受欢迎开源中国软件评选,请投票支持!
egova_invoker 在 2019 年度最受欢迎开源中国软件评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票赢奖品
已投票

基于Spring的HttpInvoker实现改写

服务器端调用:    HttpInvoker.invoker 方法,设置InvokerProcess处理

客户端调用:    ProxyFactory.proxy 方法,生成接口的代理对象,直接调用方法

客户端和服务器端的接口和实体类要一致,实体类必须是可以序列化的

比如:

定义Bean:

   public class DemoBean implements java.io.Serializable{
        /**
         * 
         */
        private static final long serialVersionUID = -5401380996187961689L;
        private String name;
        private String passWork;
        //省略get,set
    }

定义接口:

  public interface DemoService {
        public DemoBean  doTest(DemoBean bean);
    }

客户端调用:

  import com.egova.rpc.proxy.ProxyFactory;
    public class ClientDemo {
        public static void main(String[] args) {
            String bindUrl = "服务器端请求地址/egova_invoker/invoker";
            DemoService demoService = ProxyFactory.proxy(DemoService.class, bindUrl);
            DemoBean  demo = new DemoBean();
            DemoBean  value = demoService.doTest(demo);
            System.out.println(value);
        }
    }

服务端处理:

 import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import com.egova.rpc.remote.HttpInvoker;
    import com.egova.rpc.remote.InvokerProcess;
    import com.egova.rpc.support.RemoteInvocation;
    @Controller
    @RequestMapping(value="/egova_invoker")
    public class ServerDemo{
        @RequestMapping(value="invoker")
        public void invoker(HttpServletRequest request, HttpServletResponse  response) {
            HttpInvoker.invoker(request, response, new InvokerProcess(){
                public Object process(RemoteInvocation invocation){
                    //获取targetObject,即接口invocation.getInterfaceClazz()实现类
                    Object targetObject = new Object();
                    invocation.invoke(targetObject);
                }
            });
        }
    }
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

dubbo源码分析-集群容错(一)

Dubbo 主要提供了这样几种容错方式: Failover Cluster - 失败自动切换 Failfast Cluster - 快速失败 Failsafe Cluster - 失败安全 Failback Cluster - 失败自动恢复 Forking Cluster - 并行...

03/07 17:42
10
0
dubbo源码分析系列——dubbo-cluster模块源码分析

dubbo-cluster也是dubbo中最为重要的一个模块,该模块实现了多种集群容错特性(支持包括failover, failsafe, failback, froking, boradcast多种集群通错特性),还实现了目录服务,负载均衡...

2016/06/12 10:28
4.9K
3
dubbo源码分析系列(3)服务的引用

#1 系列目录 - [dubbo源码分析系列(1)扩展机制的实现](http://my.oschina.net/pingpangkuangmo/blog/508963) - [dubbo源码分析系列(2)服务的发布](http://my.oschina.net/pingpangkuang...

2015/10/12 08:37
4.6K
2
dubbo源码分析系列(2)服务的发布

#1 系列目录 - [dubbo源码分析系列(1)扩展机制的实现](http://my.oschina.net/pingpangkuangmo/blog/508963) - [dubbo源码分析系列(2)服务的发布](http://my.oschina.net/pingpangkuang...

2015/09/28 08:15
8.7K
9
聊聊dubbo的Invoker select

序 本文主要研究一下dubbo的Invoker select InvokerInvocationHandler.invoke dubbo-2.7.1-sources.jar!/org/apache/dubbo/rpc/proxy/InvokerInvocationHandler.java public class InvokerIn...

06/16 21:50
23
0
dubbo源码分析(2)

详情查看dubbo官网:http://dubbo.io/Developer+Guide-zh.htm

2016/04/19 14:56
127
1
聊聊dubbo的ConsumerContextFilter

序 本文主要研究一下dubbo的ConsumerContextFilter ConsumerContextFilter dubbo-2.7.2/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ConsumerContextFilter.java @A...

07/01 22:47
25
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部