您好,登錄后才能下訂單哦!
安裝
下載
下載地址:http://archive.apache.org/dist/thrift/0.10.0/
將thrift-0.10.0.exe放到一個文件下,如F:\thrift下,將其重命名為thrift.exe。如果不重命名,需要使用thrift-0.10.0調(diào)用thrift命令。
配置環(huán)境變量
向Path
中添加變量值,值為thrift.exe
的地址,如F:\thrift。
測試
命令行輸入thrift -version
,如果輸出thrift的版本即表明安裝成功。
使用
編寫IDL接口
HelloService.thrift
namespace java com.thrift.demo.service service HelloService{ string sayHello(1:string username) }
編譯
編譯之后會生成類HelloService
。
thrift -gen java HelloService.thrift
編寫實現(xiàn)類
HelloServiceImpl.java
public class HelloServiceImpl implements HelloService.Iface { @Override public String sayHello(String username) throws TException { return "Hello Thrift Service : " + username; } }
編寫服務(wù)端代碼
public class HelloServer { public static final int SERVER_PORT = 8090; public void startServer() { try { System.out.println("HelloService TSimpleServer start ...."); TProcessor tprocessor = new HelloService.Processor<HelloService.Iface>(new HelloServiceImpl()); // 簡單的單線程服務(wù)模型,一般用于測試 TServerSocket serverTransport = new TServerSocket(SERVER_PORT); TServer.Args tArgs = new TServer.Args(serverTransport); tArgs.processor(tprocessor); tArgs.protocolFactory(new TBinaryProtocol.Factory()); TServer server = new TSimpleServer(tArgs); server.serve(); } catch (Exception e) { System.out.println("Server start error!!!"); e.printStackTrace(); } } public static void main(String[] args) { HelloServer server = new HelloServer(); server.startServer(); } }
編寫客戶端代碼
public class HelloClient { public static final String SERVER_IP = "localhost"; public static final int SERVER_PORT = 8090; public static final int TIMEOUT = 30000; public void startClient(String userName) { TTransport transport = null; try { transport = new TSocket(SERVER_IP, SERVER_PORT, TIMEOUT); // 協(xié)議要和服務(wù)端一致 TProtocol protocol = new TBinaryProtocol(transport); HelloService.Client client = new HelloService.Client(protocol); transport.open(); String result = client.sayHello(userName); System.out.println("Thrify client result =: " + result); } catch (TTransportException e) { e.printStackTrace(); } catch (TException e) { e.printStackTrace(); } finally { if (null != transport) { transport.close(); } } } public static void main(String[] args) { HelloClient client = new HelloClient(); client.startClient("Michael"); } }
運行
先運行服務(wù)端,再運行客戶端。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對億速云的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。