注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

liangxh2008的博客

 
 
 

日志

 
 

FEPSS RPC Server开源  

2010-04-13 20:41:37|  分类: AppMarket |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Fepss致力于免费OA的开发和推广,利用免费OA系统推动中国中小型企业的信息化的发展,FEPSS公司同时积极参如开源发展,日前FEPSS公司将其核心的RPC Server进行了开源。

   FEPSS RPC Server是负责整个系统的后台核心服务,利用Google的Protobuf协议、Apache的高性能网络库 MinaTapestry5-IOC.在普通的2G内存、2.4G的CPU的笔记本上能达到并发10K的请求,已经平稳运行在系统中,支撑整个系统的多项服务。

   FEPSS RPC Server 项目信息:

  1. source: https://github.com/bitiboy/fepss-rpc/tree
  2. download: http://github.com/bitiboy/fepss-rpc/downloads

 

快速上手指南:

通过查看RpcApplicationTest.java可以了解具体的实现方法

1) 定义你的RPC服务类,例如: test.proto

package protobuf.socketrpc;

option java_package = "com.fepss.rpc.test";
option java_outer_classname = "TestProto";

message User{
  optional string userName=1;
}
message Result{
  optional string result=1;
  optional bool success=2;
}

service TestService {
  rpc TestMethod(User) returns(Result);
}

2) 使用Google的protoc来产生服务接口
protoc test.proto --java_out .

3) 实现你的服务方法.
public class TestServiceImpl extends TestService{

  @Override
  public void testMethod(RpcController controller, User request,
      RpcCallback done) {
    Builder builder =Result.newBuilder().setResult("get user"+request.getUserName());
    builder.setSuccess(true);
    done.run(builder.build());
  }
}
4) 运行一个远程调用测试,RpcApplicationTest.java
    @Test
  public void testRpc() throws IOException{
    RpcApplication application = new RpcApplication(TestModule.class);
    try{
      application.start();
      // create client to call rpc
      RpcChannelImpl channel = new RpcChannelImpl(RpcConstants.DEFAULT_HOST,
                        RpcConstants.DEFAULT_PORT);
      RpcController controller = channel.newRpcController();
      Stub service = TestService.newStub(channel);
http://my.lupaworld.com/show.php?tid=573    

 

  // request data
      String reqdata = "Request Data";
      User request = User.newBuilder().setUserName(reqdata).build();

      // response callback
      RpcCallback done = new RpcCallback() {
        @Override
        public void run(Result result) {
          Assert.assertEquals(result.getResult(),
              "get userRequest Data");
          Assert.assertTrue(result.getSuccess());

        }
      };
      // execute remote method
      service.testMethod(controller, request, done);
      Assert.assertFalse(controller.failed());
      Assert.assertEquals(controller.errorText(), null);
    }finally{
      application.stop();
    }
   
  }
  public static class TestModule{
    public static void contributeIoHandler(MappedConfiguration configruation){
      configruation.add(TestService.getDescriptor().getFullName(),
               new TestServiceImpl());
    }
  }
   
5)欢迎反馈  jcai AT Fepss.com

  评论这张
 
阅读(587)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017