Thrift文件与编程语言无关,用于定义数据类型和服务接口,然后生成用来构建RPC客户和服务器所需的全部代码。
- #!/usr/local/bin/thrift --gen java
- namespace java Test
- service Something {
- i32 ping()
- }
在linux命令行下输入:Thrift –gen javatestJava.thrift
生成的源文件在./gen-java/目录下。
进入./gen-java目录,确保系统的CLASSPATH设置正确。libthrift.jar,,slf4j-api和slf4j-simple这几个包都需要包含在CLASSPATH里。
- package Test;
- import org.apache.thrift.TException;
- class SomethingImpl implements Something.Iface {
- public SomethingImpl() {}
- public int ping() throws TException {
- System.out.println( "Recieve ping from client..." );
- return 0;
- }
- }
- package Test;
- import java.io.IOException;
- import org.apache.thrift.protocol.TBinaryProtocol;
- import org.apache.thrift.protocol.TBinaryProtocol.Factory;
- import org.apache.thrift.server.TServer;
- import org.apache.thrift.server.TThreadPoolServer;
- import org.apache.thrift.transport.TServerSocket;
- import org.apache.thrift.transport.TTransportException;
- public class Server {
- private voidstart() {
- try {
- TServerSocket serverTransport = new TServerSocket(7911);
- Something.Processor processor = new Something.Processor(newSomethingImpl());
- Factory protFactory = new TBinaryProtocol.Factory(true, true);
- TServer server = new TThreadPoolServer(processor, serverTransport,protFactory);
- System.out.println("Starting server on port 7911 ...");
- server.serve();
- } catch (TTransportException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void main(String args[]){
- Server srv = new Server();
- srv.start();
- }
- }
创建Client.java
- package Test;
- import java.io.IOException;
- import org.apache.thrift.*;
- import org.apache.thrift.protocol.*;
- import org.apache.thrift.transport.*;
- public class Client {
- public static void main(String [] args) {
- try {
- TTransport transport = newTSocket("localhost", 7911);
- TProtocol protocol = newTBinaryProtocol(transport);
- Something.Client client =new Something.Client(protocol);
- transport.open();
- System.out.println("Client calls ping()");
- client.ping();
- transport.close();
- } catch (TException x) {
- x.printStackTrace();
- }
- }
- }
在linux命令行下输入:javac *.java,生成客户端与服务器端的class文件。
首先启动服务器。退到gen-java目录,输入java Test/Server,屏幕显示如下:
Starting server on port 7911 ...
然后启动客户端。在同一目录下输入java Test/Client,屏幕显示如下:
Client calls ping()
这时服务器端的输出多了一行:
Recieve ping from client...
相关推荐
它通过定义一种中间表示(IDL,Interface Description Language)来描述服务接口,然后自动生成相应的客户端和服务器端代码,使得开发者可以专注于业务逻辑,而无需关注底层通信细节。 在Java环境中,Thrift提供了...
《Thrift下Java服务器与客户端开发指南》 Thrift是一种跨语言的服务开发框架,由Facebook开发,后来成为Apache基金会的开源项目。它主要用于构建高效、可扩展的分布式系统。Thrift通过定义一种中间语言(IDL,...
总结来说,Thrift 提供了一种高效、简洁的方式来构建分布式系统,通过定义服务接口和数据类型,自动生成跨语言的客户端和服务器端代码。在 Java 平台上,你可以利用这些生成的类创建服务器,处理客户端请求,并通过...
《Thrift下Java服务器与客户端开发指南》 Thrift 是一个高效的跨语言服务开发框架,由Facebook开源,主要用于构建可扩展且跨平台的服务。它通过定义一种中间表示(IDL,Interface Description Language)来描述数据...
《Thrift下Java服务器与客户端开发指南》是指导开发者如何使用Thrift框架进行Java应用程序的开发,特别是涉及服务器和客户端的交互。Thrift是一个开源的跨语言服务开发框架,它通过定义一种中间语言(IDL)来描述...
生成代码后,Thrift会为每种目标语言(如Java、Python、C++等)创建相应的客户端和服务器端代码。客户端代码提供了调用远程服务的接口,服务器端代码则包含了处理这些调用的实际逻辑。例如,对于Java,客户端代码会...
客户端则使用Thrift生成的Java客户端类,连接服务端,进行通信。 - 这个测试项目可能是为了演示如何使用Thrift进行RPC(Remote Procedure Call)调用,包括服务的定义、服务端的实现、客户端的调用流程等。 - 项目...
在"Thrift双向通讯java代码"这个主题中,我们主要讨论如何使用Thrift在Java环境中实现客户端和服务器端的双向通信。双向通信意味着服务器和客户端都可以向对方发送请求并接收响应,这对于构建复杂的分布式系统至关...
然后,开发者可以通过Thrift的服务器端库来启动服务,使得客户端可以连接并调用这些方法。 在PHP客户端,Thrift同样会为服务接口生成对应的PHP代码。开发者只需要实例化客户端对象,就可以像调用本地函数一样调用...
它通过定义一种中间语言(IDL,Interface Definition Language)来描述服务接口,然后自动生成各种编程语言的客户端和服务器端代码,使得不同语言之间可以进行无缝通信。在本示例中,我们将探讨如何使用Thrift在Java...
Thrift通过定义一种中间表示(IDL,接口定义语言)来描述服务,然后自动生成对应语言的客户端和服务器端代码,使得不同语言之间可以进行高效、便捷的通信。本示例将详细阐述如何使用Java操作Thrift。 首先,让我们...
在Java中使用Thrift框架创建服务器和客户端是跨语言服务开发的一种高效方法。Thrift起源于Facebook,后来成为Apache的开源项目,它提供了一个强大的软件堆栈和代码生成引擎,使得不同编程语言之间的RPC(远程过程...
6. **服务启动与调用**:在Java实例中,你需要启动Thrift服务(服务器端),然后在另一个应用程序(客户端)中通过生成的客户端代码调用服务。这涉及到了网络通信和异步/同步调用的概念。 7. **测试**:文件"test...
总结来说,这个项目提供了一个学习Thrift的实例,涵盖了Thrift的接口定义、服务器端实现、客户端调用以及实际数据通信的过程。通过参与这个项目,你可以深入了解Thrift如何简化分布式系统间的通信,以及如何在实际...
在Java客户端,你可以创建`MyServiceClient`对象,连接到C#服务端的地址和端口,然后调用`ping`和`echo`方法。Thrift会处理网络通信、序列化和反序列化的工作,使得跨语言通信变得简单。 在项目的`thriftdemo`目录...
根据提供的文件信息,我们可以深入探讨Java即时通讯QQ服务器端加客户端的相关知识点,包括其实现原理、关键技术以及如何利用源码进行研究。 ### 实现原理 #### 即时通讯概述 即时通讯(Instant Messaging, IM)是...
接下来,Thrift的编译器会根据这个IDL文件生成Java代码,包括一个服务接口、一个服务处理类(实现服务接口)、一个服务客户端和一个服务端口接口。例如,`MyService.java`是服务接口,`MyServiceHandler.java`是服务...
它允许开发者定义服务接口和数据类型,然后Thrift编译器会自动生成对应编程语言的客户端和服务器端代码。例如,一个简单的Thrift IDL文件可能如下: ```thrift service Calculator { i32 add(1:i32 num1, 2:i32 ...
这个JAR文件提供了Thrift协议的实现,包括数据序列化和反序列化、服务接口的实现以及客户端和服务器端的通信逻辑。版本号0.9.1表示这是Thrift的一个特定版本,可能包含特定的功能和修复。 3. **slf4j-api-1.5.8.jar...