Thrift java服務器與客戶端示例 - john c - 博客園
簡單的實現一個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 ? public class TestImpl implements Test.Iface { 6 7 public void 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 ? public class Server { 14 public void 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 public static void 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 ? public class Client { 11 12 public void 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 public static void main(String[] args) { 29 Client client = new Client(); 30 client.startClient(); 31 } 32 }
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
