首页 > 编程 > Java > 正文

Java thrift服务器和客户端创建实例代码

2019-11-26 12:42:28
字体:
来源:转载
供稿:网友

Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的、高效的服务。

Thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器。thrift允许你定义一个简单的定义文件中的数据类型和服务接口。以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。

首先环境介绍一下:

1.IntelliJ IDEA 2017.1

2.thrift-0.9.3

相信大家在看我这篇文章的时候已经对thrift通信框架已有所调研,这里就不再赘述了,直接进入正题:

<1>创建HelloWorld.thrift

namespace java com.thrift.demo

service HelloWorldService{string sayHello(1:string username)}

 <2>利用thrift生成HelloWorld.java文件,cmd指令下进入thrift当前目录下输入命令

thrift.exe -gen java HelloWorld.thrift

java为要生成文件的类型,HelloWorld.thrift为前面的文件。

<3>创建IDEA 下的maven项目,其中的好处就不一一说明了,最重要的一条就是可以在pom.xml文件中添加dependency,能够在项目中自行下载库文件,方便协同开发中出现的开发包不对应的情况。

<dependency>      <groupId>javax.servlet</groupId>      <artifactId>javax.servlet-api</artifactId>      <version>3.1.0</version>    </dependency>    <dependency>      <groupId>jstl</groupId>      <artifactId>jstl</artifactId>      <version>1.2</version>    </dependency>    <dependency>      <groupId>org.apache.thrift</groupId>      <artifactId>libthrift</artifactId>      <version>0.9.3</version>    </dependency>    <dependency>      <groupId>org.slf4j</groupId>      <artifactId>slf4j-log4j12</artifactId>      <version>1.7.5</version>    </dependency>

上述pom引入相应的依赖项就可以让它自行下载。

<4>项目的结构图当前如下所示:

File--Project Structure--Modules,在main文件夹下新建java文件夹并设为Soueces类型(因为在Sources文件下可以新建java class文件)

同时将thrift生成的HelloWorld.java文件复制到该目录下

<5>实现接口Iface

java代码:HelloWorldImpl.java

package com.jmust.thrift.demo;import org.apache.thrift.TException;/** * Created by Administrator on 2017/3/31. */public class HelloWorldImpl implements HelloWorldService.Iface {  public HelloWorldImpl() {  }  @Override  public String sayHello(String username) throws TException {    return "Hi,"+username+"Welcome to my blog http://www.cnblogs.com/zfygiser";  }}

<6>服务端TSimpleServer

java代码:HelloServer.java

/** * Created by Administrator on 2017/3/31. */package com.jmust.thrift.demo;import org.apache.thrift.TProcessor;import org.apache.thrift.protocol.TBinaryProtocol;import org.apache.thrift.server.TServer;import org.apache.thrift.server.TSimpleServer;import org.apache.thrift.transport.TServerSocket;public class HelloServer {  public final static int SERVER_PORT = 7099;  private static String SERVER_IP = "localhost";  public void startServer() {    try {      System.out.println("HelloWorld Server start...");      TServerSocket serverTransport = new TServerSocket(SERVER_PORT);      TServer.Args args = new TServer.Args(serverTransport);      TProcessor process = new HelloWorldService.Processor(new HelloWorldImpl());      TBinaryProtocol.Factory portFactory = new TBinaryProtocol.Factory(true, true);      args.processor(process);      args.protocolFactory(portFactory);      TServer server = new TSimpleServer(args);      server.serve();    } catch (Exception e) {      System.out.println("Server start error");      e.printStackTrace();    }  }  public static void main(String[] args) {    HelloServer server = new HelloServer();    server.startServer();  }}

<7>编写客户端代码

java代码:Client.java

package com.jmust.thrift.demo;import org.apache.thrift.protocol.TBinaryProtocol;import org.apache.thrift.protocol.TProtocol;import org.apache.thrift.transport.TSocket;import org.apache.thrift.transport.TTransport;/** * Created by Administrator on 2017/4/1. */public class Client {  public static final int SERVER_PORT = 7099;  public static final String SERVER_IP = "localhost";  public void startClient(String username) {    TTransport tTransport = null;    try {      tTransport = new TSocket(SERVER_IP, SERVER_PORT);      //协议要和服务端一致      TProtocol protocol = new TBinaryProtocol(tTransport);      HelloWorldService.Client client = new HelloWorldService.Client(protocol);      tTransport.open();      String result = client.sayHello(username);      System.out.println("Thrift client result=" + result);    } catch (Exception e) {      e.printStackTrace();    }  }  public static void main(String[] args) {    Client client = new Client();    client.startClient("zfy");  }}

客户端测试成功,截图如下:

以上所述是小编给大家介绍的Java thrift服务器和客户端创建实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表