2009年3月23日星期一

thrift粘合java

上篇用thrift粘合了erlang,分别写了客户端和服务器端。这篇继续些个java版本的客户端。其实通过这几篇可以发现,这些客户端和服务器端的格式是大同小异的,也再次说明了语言层面中语法的区别实在不大~

首先还是需要libthrift-java的包,还是去上上篇提到的地址那里去下载。
然后运行
thrift --gen java hello.thrift
这样就生成了gen-java的文件夹,里面就是thrift给我们生成好的文件。(Hello.java)
然后我们进入gen-java的目录,写一个客户端文件:
HelloClient.java

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

public class HelloClient{
public static void main(String [] args){
try{
TTransport transport = new TSocket("localhost", 9090);
TProtocol protocol = new TBinaryProtocol(transport);
Hello.Client client = new Hello.Client(protocol);

transport.open();
String result = client.say("world");
System.out.println(result);
transport.close();
}
catch(TException ex){
ex.printStackTrace();
}
}
}
配写一个方便的Makefile:

LIB_PATH=/usr/share/java/libthrift.jar

all:
javac -cp ./:${LIB_PATH} HelloClient.java
run:
java -cp ./:${LIB_PATH} HelloClient
clean:
rm *.class
make之前别忘了先启动服务器端,我们使用上次erlang版本的Server:

erl> hello_server:start()

然后执行我们的这个客户端:

make
make run

可以看到java版的这个也正常输出了Hello, world

没有评论:

发表评论