`
wbj0110
  • 浏览: 1570926 次
  • 性别: 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 服务器 客户端通信

    它通过定义一种中间表示(IDL,Interface Description Language)来描述服务接口,然后自动生成相应的客户端和服务器端代码,使得开发者可以专注于业务逻辑,而无需关注底层通信细节。 在Java环境中,Thrift提供了...

    Thrift下java服务器与客户端开发指南[归纳].pdf

    《Thrift下Java服务器与客户端开发指南》 Thrift是一种跨语言的服务开发框架,由Facebook开发,后来成为Apache基金会的开源项目。它主要用于构建高效、可扩展的分布式系统。Thrift通过定义一种中间语言(IDL,...

    Thrift下java服务器与客户端开发指南

    总结来说,Thrift 提供了一种高效、简洁的方式来构建分布式系统,通过定义服务接口和数据类型,自动生成跨语言的客户端和服务器端代码。在 Java 平台上,你可以利用这些生成的类创建服务器,处理客户端请求,并通过...

    Thrift下java服务器与客户端开发指南.pdf

    《Thrift下Java服务器与客户端开发指南》 Thrift 是一个高效的跨语言服务开发框架,由Facebook开源,主要用于构建可扩展且跨平台的服务。它通过定义一种中间表示(IDL,Interface Description Language)来描述数据...

    Thrift下java服务器与客户端开发指南实用.pdf

    《Thrift下Java服务器与客户端开发指南》是指导开发者如何使用Thrift框架进行Java应用程序的开发,特别是涉及服务器和客户端的交互。Thrift是一个开源的跨语言服务开发框架,它通过定义一种中间语言(IDL)来描述...

    Thrift RPC客户端的服务化框架代码

    生成代码后,Thrift会为每种目标语言(如Java、Python、C++等)创建相应的客户端和服务器端代码。客户端代码提供了调用远程服务的接口,服务器端代码则包含了处理这些调用的实际逻辑。例如,对于Java,客户端代码会...

    thrift_java_demo和安装包

    客户端则使用Thrift生成的Java客户端类,连接服务端,进行通信。 - 这个测试项目可能是为了演示如何使用Thrift进行RPC(Remote Procedure Call)调用,包括服务的定义、服务端的实现、客户端的调用流程等。 - 项目...

    Thrift双向通讯java代码

    在"Thrift双向通讯java代码"这个主题中,我们主要讨论如何使用Thrift在Java环境中实现客户端和服务器端的双向通信。双向通信意味着服务器和客户端都可以向对方发送请求并接收响应,这对于构建复杂的分布式系统至关...

    Thrift java服务端、php客户端

    然后,开发者可以通过Thrift的服务器端库来启动服务,使得客户端可以连接并调用这些方法。 在PHP客户端,Thrift同样会为服务接口生成对应的PHP代码。开发者只需要实例化客户端对象,就可以像调用本地函数一样调用...

    Thrift中实现Java与Python的RPC互相调用示例代码.rar

    它通过定义一种中间语言(IDL,Interface Definition Language)来描述服务接口,然后自动生成各种编程语言的客户端和服务器端代码,使得不同语言之间可以进行无缝通信。在本示例中,我们将探讨如何使用Thrift在Java...

    采用java操作thrift代码示例

    Thrift通过定义一种中间表示(IDL,接口定义语言)来描述服务,然后自动生成对应语言的客户端和服务器端代码,使得不同语言之间可以进行高效、便捷的通信。本示例将详细阐述如何使用Java操作Thrift。 首先,让我们...

    Thrift入门及Java实例演示

    6. **服务启动与调用**:在Java实例中,你需要启动Thrift服务(服务器端),然后在另一个应用程序(客户端)中通过生成的客户端代码调用服务。这涉及到了网络通信和异步/同步调用的概念。 7. **测试**:文件"test...

    一个Thrift的学习测试项目,服务器端实现从PLC进行采集数据,推送到Thrift,以接口的形式对外公开数据.zip

    总结来说,这个项目提供了一个学习Thrift的实例,涵盖了Thrift的接口定义、服务器端实现、客户端调用以及实际数据通信的过程。通过参与这个项目,你可以深入了解Thrift如何简化分布式系统间的通信,以及如何在实际...

    thrift服务java调用C#完整代码.rar

    在Java客户端,你可以创建`MyServiceClient`对象,连接到C#服务端的地址和端口,然后调用`ping`和`echo`方法。Thrift会处理网络通信、序列化和反序列化的工作,使得跨语言通信变得简单。 在项目的`thriftdemo`目录...

    thrift-0.9.2.exe

    它允许开发者定义服务接口和数据类型,然后Thrift编译器会自动生成对应编程语言的客户端和服务器端代码。例如,一个简单的Thrift IDL文件可能如下: ```thrift service Calculator { i32 add(1:i32 num1, 2:i32 ...

    Thrift开发所需jar

    这个JAR文件提供了Thrift协议的实现,包括数据序列化和反序列化、服务接口的实现以及客户端和服务器端的通信逻辑。版本号0.9.1表示这是Thrift的一个特定版本,可能包含特定的功能和修复。 3. **slf4j-api-1.5.8.jar...

    Thrift demo

    这个示例可能展示了如何创建一个简单的服务,定义一个方法,如 "sayHello",然后在服务器端实现这个方法,客户端通过 Thrift 协议调用这个方法。 总的来说,Thrift 是一种强大的工具,用于构建分布式系统和服务之间...

    thrift环境搭建(内附thrift运行环境可执行程序、搭建说明文本)

    这将在当前目录下生成一个gen-java目录,其中包含了Java客户端和服务器端的代码。 7. **实现服务** 在生成的代码中,你需要实现服务处理类,处理来自客户端的请求。同时,客户端代码可以用来调用远程服务。 8. *...

    基于thrift的RPC调用实例

    RPC(远程过程调用)是一种在分布式系统中执行远程计算的方法,使得客户端可以在不理解远程服务器内部实现的情况下,像调用本地函数一样调用远程服务器上的服务。在本实例中,我们将关注一个基于Thrift的RPC调用实现...

    thrift-0.5.0.tar.gz linux版本

    使用IDL,开发者可以定义数据类型和服务接口,然后Thrift编译器会自动生成对应编程语言的代码,这些代码可以用来构建客户端和服务器端的应用。这大大简化了跨语言服务开发的过程,减少了重复工作,提高了开发效率。 ...

Global site tag (gtag.js) - Google Analytics