java搭建finagle(2)

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

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

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

如下面代码:

namespace java com.test.finagle.demo
service Hello{

    string helloString(1:string para)
    i32 helloInt(1:i32 para)
    bool helloBoolean(1: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>
时间: 2024-12-16 21:53:30

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

java搭建finagle

1.新建maven项目 2.pom文件添加依赖 添加3个主要依赖<dependency> <groupId>com.twitter</groupId> <artifactId>scrooge-core_2.10</artifactId> <version>${scrooge.version}</version> </dependency> <dependency> <groupId>co

使用java搭建简单的ligerui环境

最近因为工作需要,学习了ligerui框架.但是,因为在公司,我们只是作为最低层的码农,所以环境都已经搭建好了,我们这些码农平时都是直接拿到工程,然后在别人的框架上不断的ctrl + c.ctrl + v,然后修修补补.所以为了摆脱这种困境,决定自己使用简单的servlet搭建一个ligerui,然后测试下ligerui这玩意到底是怎么跑起来的. 1.下载ligerui相关组件.这个很简单,直接去www.ligerui.com即可找到. 2.使用Eclipse创建一个web工程,然后搭建下面这个

ubuntu14.04LTS下ECLIPSE+JAVA搭建

1,上eclipse官网下载最新版主程序$ cd /home/<用户>/下载 $ tar -xvf eeclipse-standard-luna-R-linux-gtk-x86_64.tar.gz$ sudo mv eclipse /opt 2, 上oracle下载jre(附注网上有用JDK) $ cd /home/<用户名>/下载$ tar -xvf jre-7u67-linux-x64.tar.gz解压后会有jre1.7.0_67文件夹生成 $ sudo mv jre1.7.0

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

这又是一篇JavaWeb相关的博客,内容涉及: SpringBoot:微框架,提供快速构建服务的功能 SpringMVC:Struts的替代者 MyBatis:数据库操作库 Groovy:能与Java结合的高级语言,底层为Java Maven:用于简化jar包导入和打包 log4j:日志管理 我们要做的是一个简单的接口,根据URL请求得到对应的数据,数据格式可以是JSON或者Xml 效果如下: 可以看到,这里使用了Get方法,请求了当前服务器中所有书本信息,并得到了一个JSON格式的结果. 如果

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

在 Spring Boot 项目中,正常来说是不存在 XML 配置,这是因为 Spring Boot 不推荐使用 XML ,注意,并非不支持,Spring Boot 推荐开发者使用 Java 配置来搭建框架,Spring Boot 中,大量的自动化配置都是通过 Java 配置来实现的,这一套实现方案,我们也可以自己做,即自己也可以使用纯 Java 来搭建一个 SSM 环境,即在项目中,不存在任何 XML 配置,包括 web.xml . 环境要求: 使用纯 Java 来搭建 SSM 环境,要求 T

java 搭建webservice服务+test客户端测试

整理别人的日志: 一.什么是webservice 一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中运行,一种新的web应用程序分支,可以发布.定位通过web调用.它是一个应用组件,为其他应用程序提供数据与服务,各应用程序通过网络协议和规定的一些标准数据格式(http.xml.soap)来访问webservice,通过web service内部执行得到所需的结果. 二.关键的技术和一些规则: 1.xml:描述数据的标准方法. 2.soap:表示信息交换的协议. 3.wsdl:web服

【转】基于CXF Java 搭建Web Service (Restful Web Service与基于SOAP的Web Service混合方案)

转载:http://www.cnblogs.com/windwithlife/archive/2013/03/03/2942157.html 一,选择一个合适的,Web开发环境: 我选择的是Eclipse for J2EE,当然大家可以选择MyEclipse我只是嫌最新版的MyEclipse Crack太烦,所以没用它.当年我也是最喜欢它的哟.如果你手头只有Eclipse for Java没关系,安装一个WTP就可以了. a.首先创建一个Dynamic Web Project : 在创建的第一页

使用纯Java搭建SSM框架

基于Java形式的项目配置,相比于基于配置文件的形式更直接,更简洁,更简单.使用配置文件,比如xml,json,properties等形式,都是用代码去解析配置文件内的信息,然后根据其信息设置相应配置类的属性.而Java形式的配置是跳过配置文件,直接将配置信息赋值到相应的配置类里.俗话说的好:在java中没什么是加一层(XML文件)解决不了的,但我们也是需要知道它的运行过程和细节的. 第一步:配置SpringDao层 package com.xiaobai.config; import com.

windows7 selenium2+java 搭建

一.环境配置 1.下载selenium-java-2.53.0,并解压,下载selenium-server-standalone-2.53.1.jar(官网下载) 2.下载eclipse(Version: Neon.1a Release (4.6.1)) 官网下载的最新版 3.安装jdk(1.8版本) ,我之前装的是1.7,不支持eclipse最新版,只好卸载重装了1.8 4.firefox 45(要使用较低版本的firefox,否则与selenium2不兼容,导致无法掉起) 二.创建工程 1.