在Windows系统下安装Thrift的方法与使用讲解

时间:2021-11-06 23:33:05

安装

下载

下载地址:http://archive.apache.org/dist/thrift/0.10.0/

将thrift-0.10.0.exe放到一个文件下,如f:\thrift下,将其重命名为thrift.exe。如果不重命名,需要使用thrift-0.10.0调用thrift命令。

配置环境变量

path中添加变量值,值为thrift.exe的地址,如f:\thrift。

测试

命令行输入thrift -version,如果输出thrift的版本即表明安装成功。

使用

编写idl接口

helloservice.thrift

?
1
2
3
4
namespace java com.thrift.demo.service
service helloservice{
 string sayhello(1:string username)
}

编译

编译之后会生成类helloservice

?
1
thrift -gen java helloservice.thrift

编写实现类

helloserviceimpl.java

?
1
2
3
4
5
6
public class helloserviceimpl implements helloservice.iface {
 @override
 public string sayhello(string username) throws texception {
 return "hello thrift service : " + username;
 }
}

编写服务端代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class helloserver {
 public static final int server_port = 8090;
 public void startserver() {
 try {
  system.out.println("helloservice tsimpleserver start ....");
  tprocessor tprocessor = new helloservice.processor<helloservice.iface>(new helloserviceimpl());
  // 简单的单线程服务模型,一般用于测试
  tserversocket servertransport = new tserversocket(server_port);
  tserver.args targs = new tserver.args(servertransport);
  targs.processor(tprocessor);
  targs.protocolfactory(new tbinaryprotocol.factory());
  tserver server = new tsimpleserver(targs);
  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();
 }
}

编写客户端代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class helloclient {
 public static final string server_ip = "localhost";
 public static final int server_port = 8090;
 public static final int timeout = 30000;
 public void startclient(string username) {
 ttransport transport = null;
 try {
  transport = new tsocket(server_ip, server_port, timeout);
  // 协议要和服务端一致
  tprotocol protocol = new tbinaryprotocol(transport);
  helloservice.client client = new helloservice.client(protocol);
  transport.open();
  string result = client.sayhello(username);
  system.out.println("thrify client result =: " + result);
 } catch (ttransportexception e) {
  e.printstacktrace();
 } catch (texception e) {
  e.printstacktrace();
 } finally {
  if (null != transport) {
  transport.close();
  }
 }
 }
 public static void main(string[] args) {
 helloclient client = new helloclient();
 client.startclient("michael");
 }
}

运行

先运行服务端,再运行客户端。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/sinat_28394909/article/details/84645782