上篇文章是1年前写的惭愧惭愧,今天一个同事问我要demo然后看了下文章 好吧主要的代码 没写出来,今天补充下

上篇地址:http://www.cnblogs.com/rufus-hua/p/4159278.html

上篇写到 在 thrift文件夹里 新建 hello.thrift文件

如下面代码:

  1. namespace java com.test.finagle.demo
  2. service Hello{
  3.  
  4. string helloString(:string para)
  5. i32 helloInt(:i32 para)
  6. bool helloBoolean(:bool para)
  7. void helloVoid()
  8. string helloNull()
  9.  
  10. }

然后 点击编译 ,(如果不报错的)会看到在 target文件夹里生成 target\generated-sources\thrift\scrooge\com\test\finagle\demo 下面生成的hello.java文件 很好.

然后新建java文件 继承生成文件里的ServerIface接口

如代码:

  1. public class HelloImpl implements Hello.ServiceIface {
  2. public Future<String> helloString(String para) {
  3. return Future.value(para);
  4. }
  5.  
  6. public Future<Integer> helloInt(int para) {
  7. return Future.value(para);
  8. }
  9.  
  10. public Future<Boolean> helloBoolean(boolean para) {
  11. return Future.value(para);
  12. }
  13.  
  14. public Future<Void> helloVoid() {
  15. return Future.value(null);
  16. }
  17.  
  18. public Future<String> helloNull() {
  19. return Future.value(null);
  20. }
  21. }

ok 最后一步main 方法:

  1. public class App {
  2.  
  3. static ListeningServer server;
  4. public static void main(String[] args) {
  5. Integer port = 9801;//这是 finagle 真正的监听地址
  6. String zkHosts="127.0.0.1:9000";//这是zk服务器的地址 我这里只有一台 如果多台;分割
  7. String zkPath="/soa/test/finagle";
  8. try {
  9. System.out.println("zkHosts:" + zkHosts + "\tzkPath:" + zkPath+"\tport:"+port);
  10. Hello.ServiceIface iface=new HelloImpl();
  11. server = Thrift.serveIface(new InetSocketAddress(port), iface);
  12. String zkFullPath = String.format("zk!%s!%s!0", zkHosts, zkPath);
  13. server.announce(zkFullPath);
  14. System.out.println("finagle server start");
  15. Runtime.getRuntime().addShutdownHook(new Thread() {
  16. @Override
  17. public void run() {
  18. App.close();
  19. }
  20. });
  21. Await.ready(server);
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. System.exit(-1);
  25. }
  26. }
  27.  
  28. public static void close() {
  29. System.out.println("finagle server shutdown");
  30. server.close();
  31. }
  32. }

下面上 client 端代码:(注:客户端是不用关心服务端真正的ip只需要确保zk能用就行  有个概念叫服务发现)

  1. String zkHosts="127.0.0.1:9000";
  2. String zkPath="/soa/test/finagle";
  3. String zkFullPath = String.format("zk!%s!%s", zkHosts, zkPath);
  4. ServiceFactory<ThriftClientRequest, byte[]> factory = Thrift.newClient(zkFullPath);
  5. Hello.ServiceIface helloClient = new Hello.ServiceToClient(factory.toService(), new TBinaryProtocol.Factory());
  6. String ret = helloClient.helloString("test").get();
  7. Assert.assertEquals("test", ret);

最后附上 demo下载地址 http://pan.baidu.com/s/1kTKsYDT

ps: 最后 记得修改 maven的setting文件 的镜像

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  5. <pluginGroups>
  6. </pluginGroups>
  7. <proxies>
  8.  
  9. <proxy>
  10. <id>ss</id>
  11. <active>false</active>
  12. <protocol>socks5</protocol>
  13. <host>127.0.0.1</host>
  14. <port>1080</port>
  15. </proxy>
  16. </proxies>
  17. <servers>
  18. </servers>
  19. <mirrors>
  20. <mirror>
  21. <id>nexus</id>
  22. <name>nexus</name>
  23. <url>http://maven.oschina.net/content/groups/public</url>
  24. <mirrorOf>*</mirrorOf>
  25. </mirror>
  26. </mirrors></settings>

java搭建finagle(2)的更多相关文章

  1. java搭建finagle(1)

    1.新建maven项目 2.pom文件添加依赖 添加3个主要依赖<dependency> <groupId>com.twitter</groupId> <ar ...

  2. java 搭建新项目,最佳组合:spring boot + mybatis generator

    java 搭建新项目,最佳组合:spring boot + mybatis generator

  3. Java搭建WebSocket的两种方式

    下面分别介绍搭建方法:一.直接使用Java EE的api进行搭建.一共3个步骤:1.添加依赖<dependency>    <groupId>javax</groupId ...

  4. Java——搭建自己的RESTful API服务器(SpringBoot、Groovy)

    这又是一篇JavaWeb相关的博客,内容涉及: SpringBoot:微框架,提供快速构建服务的功能 SpringMVC:Struts的替代者 MyBatis:数据库操作库 Groovy:能与Java ...

  5. 从零开始学 Java - 搭建 Spring MVC 框架

    没有什么比一个时代的没落更令人伤感的了 整个社会和人都在追求创新.进步.成长,没有人愿意停步不前,一个个老事物慢慢从我们生活中消失掉真的令人那么伤感么?或者说被取代?我想有些是的,但有些东西其实并不是 ...

  6. 手把手教你用新浪云容器 Java 搭建自己的网站

    经过一段时间的开发,更新,迭代,新浪云容器 Java 环境逐渐成熟起来,相比过去的 Java 运行环境,可用性和易用性都得到了大量的提升.同时也收到了不少用户反馈的使用问题,特此在这篇文章里综合介绍一 ...

  7. 056 Java搭建kafka环境

    1.使用Java项目搭建 2.新目录 3.添加项目支持 4.添加mavem与scala 5.修改pom <?xml version="1.0" encoding=" ...

  8. java搭建 SpringMVC+Mybatis(SMM)+mybatis-generate

    搭建SSM系统,首先要了解整个过程: 1.创建spring-mvc项目 2.在maven中添加要引用的jar包(使用框架都是较新的版本:) 3. jdbc.xml +spring-mybatis.xm ...

  9. 这一次,我连 web.xml 都不要了,纯 Java 搭建 SSM 环境!

    在 Spring Boot 项目中,正常来说是不存在 XML 配置,这是因为 Spring Boot 不推荐使用 XML ,注意,并非不支持,Spring Boot 推荐开发者使用 Java 配置来搭 ...

随机推荐

  1. Auto Updating the exe from a network location when application starts z

    http://www.codeproject.com/Tips/869588/Auto-Updating-the-exe-from-a-network-location-when?msg=499218 ...

  2. Delphi 之前解析串口数据

    //串口接收数据procedure TfrmClientMain.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Wo ...

  3. js中document.all 的用法

    1. document.all是什么? document.all 实质就是文档中所有元素的集合.可以看做一个数组.   2.document.all怎么用? 2.1 根据下标取元素. 语法: docu ...

  4. [Asp.net MVC]Asp.net MVC5系列——Razor语法

    Razor视图引擎是Asp.net MVC3中新扩展的内容,并且也是它的默认视图引擎.还有另外一种Web Forms视图引擎.通过前面的文章可知在Asp.net mvc5中创建视图,默认使用的是Raz ...

  5. 【Android】使用persist属性来调用脚本文件

    Android系统中有许多属性,属性由两个部分组成:name & value,可以使用这些属性来记录系统设置或进程之间的信息交换.Android系统在启动过程时会按序从以下几个文件中加载系统属 ...

  6. js_sl 延迟菜单

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  7. C常用字符字符串处理函数

    1.strtok();字符串分片函数

  8. django部署到最后 主页上出现的坏请求解决办法

    ALLOWED_HOSTS = ['*'] 不然会出现400的坏请求 到此为止 环境总算配置完毕历时2天半重新熟悉了大量apache 和 linux下的命令

  9. 让CSS3给你的文字加上边框宽度,并实现镂空效果

    这次,我主要向大家介绍一下CSS3下的-webkit-text-stroke属性,并分享几个用该属性制作的镂空文字效果. 1.-webkit-text-stroke属性简介 CSS边框的一个不足就是只 ...

  10. 数据结构(C语言版)---第三章栈和队列 3.4.2 队列的链式表示和实现(循环队列)

    这个是循环队列的实现,至于串及数组这两章,等有空再看,下面将学习树. 源码如下: #include <stdio.h> #include <stdlib.h> #define ...