`
wbj0110
  • 浏览: 1564878 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Thrift java服务器与客户端示例

阅读更多

简单的实现一个PING的功能

1.安装thrift

http://thrift.apache.org/download/

人人网镜像下载:

http://labs.renren.com/apache-mirror/thrift/0.6.1/thrift-0.6.1.exe

2.编写Thrift文件(定义接口,结构,异常等),保存为test.thrift

namespace java net.johnc.thrift
service Test{
 
 void ping(1: i32 length)
 
}

 

3.生成接口代码

把thrift-0.6.1.exe和test.thrift文件放在同一个目录,当然也可以把thrift-0.6.1.exe文件放进环境变量

进入DOS命令执行:thrift-0.6.1.exe --gen java test.thrift

生成文件 gen-java/net/johnc/thrift/Test.java

4.编写服务端接口实现类

在POM.xml文件加入以下依赖:

<dependency>
      <groupId>org.apache.thrift</groupId>
      <artifactId>libthrift</artifactId>
      <version>0.6.1</version>
  </dependency>

 

  把生成的Test.java复制到项目下

复制代码
1 package net.johnc.thrift;
2
3  import org.apache.thrift.TException;
4
5  publicclass TestImpl implements Test.Iface {
6
7 publicvoid ping(int length) throws TException {
8 System.out.println("calling ping ,length="+ length);
9 }
10
11 }
复制代码

5.编写启动服务代码

复制代码
1 package net.johnc.thrift;
2
3  import net.johnc.thrift.Test.Processor;
4
5  import org.apache.thrift.protocol.TBinaryProtocol;
6  import org.apache.thrift.protocol.TBinaryProtocol.Factory;
7  import org.apache.thrift.server.TServer;
8  import org.apache.thrift.server.TThreadPoolServer;
9  import org.apache.thrift.server.TThreadPoolServer.Args;
10  import org.apache.thrift.transport.TServerSocket;
11  import org.apache.thrift.transport.TTransportException;
12
13  publicclass Server {
14 publicvoid startServer() {
15 try {
16
17 TServerSocket serverTransport =new TServerSocket(1234);
18
19 Test.Processor process =new Processor(new TestImpl());
20
21 Factory portFactory =new TBinaryProtocol.Factory(true, true);
22
23 Args args =new Args(serverTransport);
24 args.processor(process);
25 args.protocolFactory(portFactory);
26
27 TServer server =new TThreadPoolServer(args);
28 server.serve();
29 } catch (TTransportException e) {
30 e.printStackTrace();
31 }
32 }
33
34 publicstaticvoid main(String[] args) {
35 Server server =new Server();
36 server.startServer();
37 }
38 }
复制代码

 

6.编写客户端代码

复制代码
1 package net.johnc.thrift;
2
3  import org.apache.thrift.TException;
4  import org.apache.thrift.protocol.TBinaryProtocol;
5  import org.apache.thrift.protocol.TProtocol;
6  import org.apache.thrift.transport.TSocket;
7  import org.apache.thrift.transport.TTransport;
8  import org.apache.thrift.transport.TTransportException;
9
10  publicclass Client {
11
12 publicvoid startClient() {
13 TTransport transport;
14 try {
15 transport =new TSocket("localhost", 1234);
16 TProtocol protocol =new TBinaryProtocol(transport);
17 Test.Client client =new Test.Client(protocol);
18 transport.open();
19 client.ping(2012);
20 transport.close();
21 } catch (TTransportException e) {
22 e.printStackTrace();
23 } catch (TException e) {
24 e.printStackTrace();
25 }
26 }
27
28 publicstaticvoid main(String[] args) {
29 Client client =new Client();
30 client.startClient();
31 }
32 }
复制代码
分享到:
评论

相关推荐

    ThriftJavaJavascriptDemo:一个示例项目,演示如何使Thrift与Java服务器和Javascript客户端一起使用

    Thrift Java服务器Javascript客户端演示一个示例项目,演示如何使Thrift与Java服务器和Javascript客户端一起使用因为花了我半天的时间来解决这个问题,所以我认为我会分享自己的发现。要求如何将thrift-0.9.2.exe...

    krb-thrift:通过 Thrift 传递 Kerberos 凭据的示例

    这是一个快速示例,它可以显示客户端缓存的 kerberos 凭据可以通过 Thrift RPC 传递到服务器,该服务器可以在服务器凭据之上代理该用户。 Hadoop 的 UserGroupInformation 用于确保与他们已经提供给我们的所有信息...

    thritf示例

    thrift示例程序,服务器端用java,客户端用php

    thrift-java-nodejs-demo:thrift demo, 相应语言java, nodejs

    thrift 示例项目,server端基于Java实现,client端基于Nodejs实现,与台州微信银行保持一样的通讯方式RPC: 远程过程调用,需要解决的问题: 通讯,序列化等项目结构thriftshared.thrift, tutorial.thrift 为thrift...

    jcr-oak-rpc:基于 apache Thrift for Jackrabbit Oak 的 RPC API

    Jackrabbit Oak Thrift RPC API 这个存储库是做什么用的? 基于JackRabbit Oak RPC API 的实现。...NodeJS 客户端示例 请检查 TRoot = require('./TRootService'), jcrOakAPI = require('jcr-oak-api'); var

    spring-thrift-integration:示例如何将Thrift集成到Spring应用程序中

    这是一个示例,展示了如何在不使用Spring Boot的情况下将集成到Spring应用程序中。 相反,它依赖于Spring的WebApplicationInitializer类,因此不需要web.xml。 如何建造 让Maven编译代码: mvn compile 如果出现...

    精通并发与 netty 视频教程(2018)视频教程

    20_通过Apache Thrift实现Java与Python的RPC调用 21_gRPC深入详解 22_gRPC实践 23_Gradle Wrapper在Gradle项目构建中的最佳实践 24_gRPC整合Gradle与代码生成 25_gRPC通信示例与JVM回调钩子 26_gRPC服务器流式调用...

    精通并发与netty视频教程(2018)视频教程

    25_gRPC通信示例与JVM回调钩子 26_gRPC服务器流式调用实现 27_gRPC双向流式数据通信详解 28_gRPC与Gradle流畅整合及问题解决的完整过程与思考 29_Gradle插件问题解决方案与Nodejs环境搭建 30_通过gRPC实现Java与...

    精通并发与netty 无加密视频

    第25讲:gRPC通信示例与JVM回调钩子 第26讲:gRPC服务器流式调用实现 第27讲:gRPC双向流式数据通信详解 第28讲:gRPC与Gradle流畅整合及问题解决的完整过程与思考 第29讲:Gradle插件问题解决方案与Nodejs环境...

    RPC_reactive:RPC系统如何工作的示例和解释

    gRPC如何在客户端-服务器之间工作的示例 React性 如何在客户端-服务器之间使用流gRPC的示例 配置 一旦准备好合同(原型),就需要构建将用于客户端和服务器之间的通信的类。 在这些示例中,我们决定使用maven插件...

Global site tag (gtag.js) - Google Analytics