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

Thrift下Java客户端与服务器端的开发

阅读更多

1创建Thrift文件

Thrift文件与编程语言无关,用于定义数据类型和服务接口,然后生成用来构建RPC客户和服务器所需的全部代码。

1.1编写testJava.thrift

  1. #!/usr/local/bin/thrift --gen java  
  2.   
  3. namespace java Test  
  4.   
  5. service Something {  
  6.    i32 ping()  
  7. }  

 

1.2运行thrift编译器,生成项目源文件

在linux命令行下输入:Thrift –gen javatestJava.thrift

生成的源文件在./gen-java/目录下。

 

2创建Java服务器

进入./gen-java目录,确保系统的CLASSPATH设置正确。libthrift.jar,,slf4j-api和slf4j-simple这几个包都需要包含在CLASSPATH里。

2.1编写SomethingImpl.java

  1. package Test;  
  2.   
  3. import org.apache.thrift.TException;  
  4.    
  5. class SomethingImpl implements Something.Iface {  
  6.  public SomethingImpl() {}  
  7.  public int ping() throws TException {  
  8.     System.out.println( "Recieve ping from client..." );  
  9.     return 0;  
  10. }  
  11. }  

2.2创建Server.java

  1. package Test;  
  2.    
  3. import java.io.IOException;  
  4. import org.apache.thrift.protocol.TBinaryProtocol;  
  5. import org.apache.thrift.protocol.TBinaryProtocol.Factory;  
  6. import org.apache.thrift.server.TServer;  
  7. import org.apache.thrift.server.TThreadPoolServer;  
  8. import org.apache.thrift.transport.TServerSocket;  
  9. import org.apache.thrift.transport.TTransportException;  
  10.   
  11. public class Server {  
  12. private voidstart() {  
  13. try {  
  14.    TServerSocket serverTransport = new TServerSocket(7911);  
  15.    Something.Processor processor = new Something.Processor(newSomethingImpl());  
  16.    Factory protFactory = new TBinaryProtocol.Factory(true, true);  
  17.    TServer server = new TThreadPoolServer(processor, serverTransport,protFactory);  
  18.    System.out.println("Starting server on port 7911 ...");  
  19.    server.serve();  
  20.   } catch (TTransportException e) {  
  21.    e.printStackTrace();  
  22.   } catch (Exception e) {  
  23.    e.printStackTrace();  
  24. }  
  25. }  
  26.   
  27. public static void main(String args[]){  
  28.    Server srv = new Server();  
  29.    srv.start();  
  30. }    
  31. }  

3创建Java客户端

创建Client.java

  1. package Test;  
  2.   
  3. import java.io.IOException;  
  4. import org.apache.thrift.*;  
  5. import org.apache.thrift.protocol.*;  
  6. import org.apache.thrift.transport.*;  
  7.    
  8. public class Client {  
  9.      public static void main(String [] args) {  
  10.           try {  
  11.                     TTransport transport = newTSocket("localhost", 7911);  
  12.                     TProtocol protocol = newTBinaryProtocol(transport);  
  13.                     Something.Client client =new Something.Client(protocol);  
  14.                     transport.open();  
  15.                     System.out.println("Client calls ping()");  
  16.                     client.ping();  
  17.                     transport.close();  
  18.                } catch (TException x) {  
  19.                     x.printStackTrace();  
  20.                }    
  21.        }    
  22. }   

4编译及运行

4.1编译

在linux命令行下输入:javac *.java,生成客户端与服务器端的class文件。

4.2运行

首先启动服务器。退到gen-java目录,输入java Test/Server,屏幕显示如下:

Starting server on port 7911 ...

然后启动客户端。在同一目录下输入java Test/Client,屏幕显示如下:

Client calls ping()

这时服务器端的输出多了一行:

Recieve ping from client...

分享到:
评论

相关推荐

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

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

    thrift-0.13.0.zip

    thrift,包括zip及其对应版本的exe.一般情况下的跨机器的通信框架都是跨软件平台的(Linux...如果编写一个服务器端程序,定义好通讯规则(在Thrift中是.thrift文件)后,以后使用的人可以采用其他编程语言来实现客户端。

    thritf示例

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

    simple-thrift-tutorial:此代码将使您在5分钟内使用Apache Thrift进行设置

    简单的节俭教程创建一个定义服务的.thrift文件thrift --gen java multiplication.thrift-这将创建用Java开发服务器和客户端所需的文件thrift --gen py multiplication.thrift-在python中创建服务器和客户端开发所需...

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

    使用 Hadoop UserGroupInformation 通过 Thrift RPC ... 这有助于我们验证我们在服务器端是否有有效的凭据来执行请求的操作(如果我们向它发送一些格式错误/不正确的东西,依赖于 HDFS 会失败)。 建造 一个简单的mvn p

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

    7_Netty的Socket编程详解 8_Netty多客户端连接与通信 9_Netty读写检测机制与长连接要素 10_Netty对WebSocket的支援 11_Netty实现服务器端与客户端的长连接通信 12_Google Protobuf详解 13_定义Protobuf文件及消息...

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

    11_Netty实现服务器端与客户端的长连接通信 12_Google Protobuf详解 13_定义Protobuf文件及消息详解 14_Protobuf完整实例详解 15_Protobuf集成Netty与多协议消息传递 16_Protobuf多协议消息支援与工程最佳实践 17_...

    93个netty高并发教学视频下载.txt

    11_Netty实现服务器端与客户端的长连接通信;12_Google Protobuf详解;13_定义Protobuf文件及消息详解;14_Protobuf完整实例详解;15_Protobuf集成Netty与多协议消息传递;16_Protobuf多协议消息支援与工程最佳实践...

    精通并发与netty 无加密视频

    第11讲:Netty实现服务器端与客户端的长连接通信 第12讲:Google Protobuf详解 第13讲:定义Protobuf文件及消息详解 第14讲:Protobuf完整实例详解 第15讲:Protobuf集成Netty与多协议消息传递 第16讲:...

    cocolian-rpc:使用Apache Thrift作为容器,Google Protobuf作为协议的一个RPC框架

    cocolian-rpc-service: 服务器端和客户端共用的一些服务,比如zookeeper注册参数对象、一些共用的thrift对象等。cocolian-rpc-docker:运行rpc服务器的docker 镜像。二、cocolian-rpc-server使用Apache Thrift 作为...

Global site tag (gtag.js) - Google Analytics