`
superlxw1234
  • 浏览: 550689 次
  • 性别: Icon_minigender_1
  • 来自: 西安
博客专栏
Bd1c0a0c-379a-31a8-a3b1-e6401e2f1523
Hive入门
浏览量:44348
社区版块
存档分类
最新评论

java Thrift example

    博客分类:
  • java
阅读更多

记录备用。。

 

test.thrift

namespace java com.lxw.data.aggregation.test  
  
struct PhysicalDeviceModel{  
1:i32 id ;  
2:string name;  
3:string status;  
4:string ip;  
5:string pool;  
}  
  
service PhysicalDeviceServices {  
void addPhysicalDevice(1:PhysicalDeviceModel device),  
PhysicalDeviceModel getDeviceById(1:i32 id )  
}

 thrift --gen java test.thrift

编译生成PhysicalDeviceModel.java和PhysicalDeviceServices.java

 

实现PhysicalDeviceServices:

 

package com.lxw.data.aggregation.test;

import java.util.HashMap;
import java.util.Map;

import org.apache.thrift.TException;

public class PhysicalDeviceServicesImpl implements PhysicalDeviceServices.Iface {
	
	private Map<String,PhysicalDeviceModel> devices = new HashMap<String,PhysicalDeviceModel>();
	
	public PhysicalDeviceServicesImpl() {
		PhysicalDeviceModel p1 = new PhysicalDeviceModel(1,"p1","running","10.10.10.1","pool1");
		PhysicalDeviceModel p2 = new PhysicalDeviceModel(2,"p2","running","10.10.10.2","pool1");
		PhysicalDeviceModel p3 = new PhysicalDeviceModel(3,"p3","shutdown","10.10.10.3","pool2");
		PhysicalDeviceModel p4 = new PhysicalDeviceModel(4,"p4","shutdown","10.10.10.4","pool2");
		devices.put(p1.getId() + "", p1);
		devices.put(p2.getId() + "", p2);
		devices.put(p3.getId() + "", p3);
		devices.put(p4.getId() + "", p4);
	}
	
	@Override
	public void addPhysicalDevice(PhysicalDeviceModel device) throws TException {
		String k = device.getId() + "";
		devices.put(k, device);
	}

	@Override
	public PhysicalDeviceModel getDeviceById(int id) throws TException {
		return devices.get(id + "");
	}

}

 

RCPServer.java

 

package com.lxw.data.aggregation.test;

import java.net.InetSocketAddress;

import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TServerTransport;
import org.apache.thrift.transport.TTransportException;

import com.lxw.data.aggregation.test.PhysicalDeviceServices.Iface;

public class RPCServer {
	public static void main(String[] args) {
		PhysicalDeviceServices.Processor<Iface> processor = new PhysicalDeviceServices.Processor<PhysicalDeviceServices.Iface>(new PhysicalDeviceServicesImpl());
		try {
			TServerTransport serverTransport = new TServerSocket( new InetSocketAddress("localhost",9813));
			TServer.Args tArgs = new TServer.Args(serverTransport);
			tArgs.processor(processor);
			tArgs.protocolFactory(new TBinaryProtocol.Factory());
			TServer server = new TSimpleServer(tArgs);
			server.serve();
		} catch (TTransportException e) {
			e.printStackTrace();
		}
	}
}

 

 

ThriftClient.java

 

package com.lxw.data.aggregation.test;

import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;

public class ThriftClient {
	public static void main(String[] args) throws Exception {
		 TTransport transport = new TSocket("localhost", 9813);  
		 TProtocol protocol = new TBinaryProtocol(transport); 
		 PhysicalDeviceServices.Client client = new PhysicalDeviceServices.Client(protocol);
		 transport.open();
		 
		 PhysicalDeviceModel p1 = client.getDeviceById(1);
		 System.out.println(p1.getId() + ":" + p1.getName());
		 System.out.println(p1);
		 PhysicalDeviceModel p2 = new PhysicalDeviceModel(1,"p1","ddddddd","10.10.10.1","pool1");
		 client.addPhysicalDevice(p2);
		 p1 = client.getDeviceById(1);
		 System.out.println(p1.getId() + ":" + p1.getName());
		 System.out.println(p1);
		 
		 
	}
}

 

0
0
分享到:
评论
1 楼 josico 2014-04-02  
用是这么用没错
想问一下 LZ公司现在是用Thrift做RPC架构吗?
用Thrift的话 服务端性能如何 目前版本只是0.9.1,稳定性如何,与应用程序耦合程度等

相关推荐

    thrift example

    在"thrift example"中,我们可以看到几个关键概念和技术: 1. **Thrift Server**:Thrift服务器是实现业务逻辑的地方,它使用Thrift编译器生成的代码来处理客户端请求。服务器可以基于多种协议和传输方式运行,例如...

    thrift java build jar

    namespace java com.example.myservice service MyService { string echo(1: string message) } struct Message { 1: required string content } ``` 3. **生成 Java 代码** 使用已安装的 Thrift 编译器,将 `...

    Thrift 示例代码_Java

    2. **生成的 Java 代码**:运行 `thrift -gen java example.thrift` 后,会生成如下的 Java 类: - `ExampleService.java`:服务接口类,包含了服务定义的方法。 - `ExampleService$Iface.java` 和 `...

    Thrift简单调用demo代码

    2. **代码生成**:通过Thrift编译器,我们可以将`.thrift`文件转换为特定编程语言的代码,例如Java、Python或C++。这些生成的代码包括服务接口的抽象类、数据结构的类以及客户端和服务端的通信协议实现。 3. **...

    thrift-0.9.1.exe和thrift-0.9.2.exe

    namespace java com.example.myapp service MyService { string sayHello(1:string name) } ``` 在这个例子中,我们定义了一个名为"MyService"的服务,它有一个方法"sayHello",接受一个字符串参数"name"并返回一...

    thrift安装

    1. **跨语言性**:Thrift支持众多编程语言,如C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk等,使得服务的开发和调用可以在不同的语言环境中进行。 2. **高性能**:Thrift通过高效...

    CSS_namespace_thrift接口文档

    在这个例子中,`namespace java com.example.myproject`指定了在生成Java代码时,所有类应该放在`com.example.myproject`包下。`User`结构体和`UserService`会被放在对应的类文件中。 压缩包内的“CSS_namespace_...

    spring与thrift集成

    2. **生成 Thrift 代码**:使用 Thrift 编译器将 IDL 文件转换为不同目标语言(如 Java)的代码。这会生成服务接口、数据结构类以及客户端和服务端的处理程序接口。在给定的文件列表中,可能已经包含了这些生成的...

    thrift-typescript-servlet-example:Thrift、TypeScript、Servlet

    结合这些组件,"thrift-typescript-servlet-example"示例展示了如何在TypeScript客户端调用Java Servlet服务器上的Thrift服务。以下是这个项目可能的工作流程: 1. **服务定义**:使用Thrift的IDL定义服务接口和...

    thrift-0.15.0.tar.gz

    4. **示例和测试**:`example`目录下通常会有各种语言的示例代码,帮助开发者快速理解和学习Thrift的使用。`test`目录则包含了对Thrift的各种单元测试,确保其功能的正确性。 5. **文档**:`docs`目录可能包含了...

    thrift-0.9.0-dev.tar.gz

    3. `example`:示例程序,用于演示如何使用Thrift构建服务和客户端。 4. `docs`:文档资料,帮助开发者理解和使用Thrift。 5. `bin`:编译后的工具,如thrift编译器的可执行文件。 6. `LICENSE`和`NOTICE`:关于...

    开源项目-thrift-iterator-go.zip

    Thrift是一种跨语言的服务开发框架,由Facebook开源,旨在提供高效、轻量级的结构化数据串行化机制,支持多种编程语言,如C++, Java, Python等。它通过IDL来定义服务接口和数据类型,然后自动生成相应的客户端和...

    getFinagleThrift:根据thrift idl生成代码

    namespace java com.example.myapp service MyService { i32 doSomething(1: MyRequest request) } struct MyRequest { 1: required string param1 2: optional i32 param2 } ``` 在这个例子中,`MyService`...

    java rpc 实例

    在Java中,RPC框架有很多种,如Hessian、gRPC、Dubbo、Thrift等。本实例将主要介绍基于XML-RPC的Java客户端实现。 XML-RPC是一种简单的基于HTTP协议的远程过程调用协议,它使用XML作为数据交换格式。在Java中,...

    finagle-example_2.9.2-6.2.0.zip

    Finagle是Twitter开发的一个分布式服务框架,它允许开发者用Scala、Java或Finagle原生的Thrift语言来构建高并发、低延迟、容错性良好的网络服务。这个压缩包可能包含了Finagle在实际应用中的代码示例,帮助开发者...

    稍微有点难度的10道java面试题,你会几道?

    public class DeadlockExample { public static void main(String[] args) { final Object resourceA = new Object(); final Object resourceB = new Object(); Thread thread1 = new Thread(() -&gt; { ...

    thrift-rpc:高可用thrift-rpc

    example provider Map&lt;String&gt; processorMap = ImmutableMap .&lt;String&gt; of( "blackService", new BlackService.Processor( new BlackServiceImpl()), "userService", new ...

Global site tag (gtag.js) - Google Analytics