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

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

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

如下面代码:

namespace java com.test.finagle.demo
service Hello{ string helloString(:string para)
i32 helloInt(:i32 para)
bool helloBoolean(:bool para)
void helloVoid()
string helloNull() }

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

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

如代码:

public class HelloImpl implements Hello.ServiceIface {
public Future<String> helloString(String para) {
return Future.value(para);
} public Future<Integer> helloInt(int para) {
return Future.value(para);
} public Future<Boolean> helloBoolean(boolean para) {
return Future.value(para);
} public Future<Void> helloVoid() {
return Future.value(null);
} public Future<String> helloNull() {
return Future.value(null);
}
}

ok 最后一步main 方法:

public class App {

    static ListeningServer server;
public static void main(String[] args) {
Integer port = 9801;//这是 finagle 真正的监听地址
String zkHosts="127.0.0.1:9000";//这是zk服务器的地址 我这里只有一台 如果多台;分割
String zkPath="/soa/test/finagle";
try {
System.out.println("zkHosts:" + zkHosts + "\tzkPath:" + zkPath+"\tport:"+port);
Hello.ServiceIface iface=new HelloImpl();
server = Thrift.serveIface(new InetSocketAddress(port), iface);
String zkFullPath = String.format("zk!%s!%s!0", zkHosts, zkPath);
server.announce(zkFullPath);
System.out.println("finagle server start");
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
App.close();
}
});
Await.ready(server);
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
} public static void close() {
System.out.println("finagle server shutdown");
server.close();
}
}

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

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

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

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

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies> <proxy>
<id>ss</id>
<active>false</active>
<protocol>socks5</protocol>
<host>127.0.0.1</host>
<port>1080</port>
</proxy>
</proxies>
<servers>
</servers>
<mirrors>
<mirror>
<id>nexus</id>
<name>nexus</name>
<url>http://maven.oschina.net/content/groups/public</url>
<mirrorOf>*</mirrorOf>
</mirror>
</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. [Papers]MHD, $\p_3\pi$, Lebesgue space [Cao-Wu, JDE, 2010]

    $$\bex \p_3\pi\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=\frac{12}{7},\quad \frac{12}{7} ...

  2. 在Eclipse中用TODO标签管理任务

    在Eclipse中用TODO标签管理任务 Elipse为Java项目的时候,有一个很人性化的“任务管理”功能,利用这个功能可以方便地将项目中一些需要处理的任务记录下来.先来看看“任务管理”是怎么使用的 ...

  3. C++重要知识点小结---3

    C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...

  4. delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法

    procedure TForm1.Button1Click(Sender: TObject);var  jpg: TJPEGImage; // 要use Jpeg单元begin  // 显示jpg大图 ...

  5. 大数据处理-bitmap是个神马东西

    1. Bit Map算法简介 所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素.由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省. 2. B ...

  6. Spring MVC 问题列表:目录

    学习SpringMVC时遇到不少问题,这里将其汇总. 1.怎么搭建SpringMVC 2.SpringMVC和Spring使用是配置到一个文件中还是两个配置文件 3.SpringMVC接受从前台请求 ...

  7. air 移动开发配置文件详解

    转自http://www.badyoo.com/index.php/2012/09/12/208/index.html 目录 所需的 AIR 运行时版本 应用程序标识 应用程序版本 主应用程序 SWF ...

  8. 【转】Java transient关键字

    Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同的线程总是看到某个成员变量的同一 ...

  9. HDU 2100 分类: ACM 2015-06-17 23:49 15人阅读 评论(0) 收藏

    Lovekey Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  10. 如何在Centos上安装python3.4

    Centos上面默认的Python版本是2.6,本文介绍如何安装3.4版本. 0.下载前准备 需要安装以下库,不然会有问题. yum -y install zlib-devel bzip2-devel ...