在Windows系統(tǒng)下安裝Thrift的方法與使用講解
安裝
下載
下載地址:http://archive.apache.org/dist/thrift/0.10.0/
將thrift-0.10.0.exe放到一個文件下,如F:\thrift下,將其重命名為thrift.exe。如果不重命名,需要使用thrift-0.10.0調用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;
}
}
編寫服務端代碼
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());
// 簡單的單線程服務模型,一般用于測試
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é)議要和服務端一致
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");
}
}
運行
先運行服務端,再運行客戶端。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
相關文章
idea啟動與jar包啟動中使用resource資源文件路徑的問題
這篇文章主要介紹了idea啟動與jar包啟動中使用resource資源文件路徑的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
實例講解Java的MyBatis框架對MySQL中數(shù)據(jù)的關聯(lián)查詢
這里我們來以實例講解Java的MyBatis框架對MySQL中數(shù)據(jù)的關聯(lián)查詢,包括一對多、多對一的關聯(lián)查詢以及自身關聯(lián)映射的方法等,需要的朋友可以參考下2016-06-06
Spring MVC使用jstl 標簽c:forEach 遍歷輸出雙層嵌套List的數(shù)據(jù)方式
這篇文章主要介紹了Spring MVC使用jstl 標簽c:forEach 遍歷輸出雙層嵌套List的數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
idea中使用SonarLint進行代碼規(guī)范檢測及使用方法
這篇文章主要介紹了idea中使用SonarLint進行代碼規(guī)范檢測,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08

