一、開發環境(清單1)
1.操作系統
Server-Linux / Client-WinXP
2.SDK
Sun JDK1.5+
3.需要的jar依賴包
libthrift.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
log4j-1.2.15.jar
4.編譯工具
Apache Ant & Apache ivy
二、安裝/配置 (清單2)
1.下載thrift源文件
http://labs.renren.com/apache-mirror//incubator/thrift/0.5.0-incubating/thrift-0.5.0.tar.gz
2.編譯thrift源文件
1)解壓 thrift-0.5.0.tar.gz
2)用ant編譯源代碼,進入x:\thrift-0.5.0\lib\java目錄,執行ant,通過ant中的ivy工具會自動從站點下載所需要的依賴包,編譯完成後如圖所示:
3)編譯過程中下載的依賴包在x:\thrift-0.5.0\lib\java\build\ivy\lib 目錄下可以看見下載的jar依賴包,將編譯成功以後的jar包加入Eclipse的開發環境中。
三、腳本文件(清單3)
1.創建腳本
創建腳本文件 testJava.thrift ,腳本文件內容如下:
namespace java com.javabloger.gen.code # 註釋1 定義生成代碼的命名空間,與你需要定義的package相對應。
struct Blog { # 註釋2.1 定義實體名稱和數據結構,類似你業務邏輯中的pojo get/set
1: string topic # 註釋2.2 參數類型可以參見 Thrift
wiki
2: binary content
3: i64 createdTime
4: string id
5: string ipAddress
6: map<string,string> props
}
service ThriftCase { # 註釋3 代碼生成的類名,你的業務邏輯代碼需要實現代碼生成的ThriftCase.Iface接口
i32 testCase1(1:i32 num1, 2:i32 num2, 3:string num3) #註釋4.1 方法名稱和方法中的入參,入參類型參見wiki
list<string> testCase2(1:map<string,string> num1)
void testCase3()
void testCase4(1:list<Blog> blog) # 註釋4.2 list 是thrift中基本數據類型中的一種,list中包含的Blog對象是上面struct中定義的
}
2.運行腳本
1)從 thrift 站點下載windows版本的編譯工具,下載地址:http://labs.renren.com/apache-mirror//incubator/thrift/0.5.0-incubating/thrift-0.5.0.exe
2)通過Thrift的腳本文件,運行 thrift 命令創建生成的代碼,例如:執行 thrift -gen java x:\testJava.thrift 命令,在當前運行的盤符下,可看見gen-java目錄,在這裏目錄中可以看見生成的java代碼,更多thrift 命令內容,請參見thrift命令自帶的help。
3.Thrift 中的基本數據類型 (清單4)
類型 描述
bool true, false
byte 8位的有符號整數
i16 16位的有符號整數
i32 32位的有符號整數
i64 64位的有符號整數
double 64位的浮點數
string UTF-8編碼的字符串
binary 字符數組
struct 結構體
list 有序的元素列表,類似於STL的vector
set 無序的不重複元素集,類似於STL的set
map key-value型的映射,類似於STL的map
exception 是一個繼承於本地語言的exception基類
service 服務。包含多個函數接口(純虛函數)
四、創建代碼(清單5)
我將示例工程分了4個包,如下所示:
\com\javabloger
\client # 1.客戶端測試代碼
\gen\code # 2.通過腳本生成的class
\layer\transport # 3.服務器端代碼和定義的傳輸協議
\layer\business # 4.具體的業務邏輯代碼
具體代碼內容這裏就不闡述了,重點是要明白代碼的結構和層次關係,其次是裏面主要的幾個類的含義,至於代碼是怎麼寫的並不是非常重要,僅僅是我個人觀點,僅供參考,謝謝。
代碼示例的下載地址: http://javabloger-mini-books.googlecode.com/files/Thritf.zip
五、運行程序
先運行server,再運行client ,客戶端向服務器端發送數據調用服務器端的4個方法,服務器端被傳入客戶端數據,運行效果如圖所示:
轉自:http://www.javabloger.com/article/thrift-java-code-example.html