Thrift 学习笔记2——Windows环境下Thrift的安装、编译以及测试
2011-11-18 00:55
1186 查看
Ubuntu 8.0+环境下Thrift的安装与编译请参见http://blog.csdn.net/zj_1395201/article/details/6974954
1、首先安装Cygwin
Cygwin 是一个用于 Windows 的类 UNIX shell 环境。 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供的许多特性;以及 Bash shell 的改写版本和许多 UNIX 实用程序,它们提供大家熟悉的
UNIX 命令行界面。前一个组件是一个 Windows 动态链接库 (DLL)。后一个组件是一组基于 Cygwin DLL 的程序,其中许多是用未经修改的 UNIX 源代码编译的。它们合在一起提供大家熟悉的 UNIX 环境。
具体安装步骤请参见http://bension8708.blog.163.com/blog/static/81943864201112424922217/
官方文档上面说明了必须安装以下包:
GNU build tools (autoconf 2.60, automake 1.10, libtool 1.5.24)
boost 1.33.1+
g++ 4.0+
bison 2.3-1
boost 1.33.1-4
boost-devel 1.33.1-4
flex 2.5.33-1
pkgconfig
libtool
所以在安装Cygwin时请务必选择安装上述包,(图省事的童鞋可以安装Cygwin的所有包,安装完整版本的好处是可以尽可能的在windows环境下模拟linux环境,便于项目的移植!缺点就是太耗时了.。。。)
2、安装Ant
下载Ant,并且配置环境变量
(偶然的发现,我的Ant并没有放在cygwin模拟的/usr/local/bin下,因为我之前就下好了,并且在windows中已经配置过,然后我在Cygwin中使用ant居然也可以,呵呵,也许Cygwin环境变量和windows中是可以互相调用的,起码Ant是这样的!)
测试Ant:
ok,Ant配置成功
3、下载Thrift最新版本并解压缩后,开始安装与编译吧~
①进入Thrift主目录
②这个地方跟在ubuntu下有点不一样哦~
③编译
测试一下看看是否成功?
thrift -r
运行结果如图,ok,终于成功啦,我的机器有点慢,编译了好长时间。。。
4、编译Thrift支持Java的Jar包
cd ../.. 进入主目录
cd lib/java 进入存放jar文件的目录,
使用ant进行编译,成功生成build文件夹以及内部的jar包,如图
5、使用Thrift进行Java服务器与客户端的通信
①.编写user.thrift文件
struct User {
1: i32 id,
2: string name,
}
service UserStorage {
void set_user(1: string name)
User get_user(1: i32 id)
}
在此目录下运行thrift命令,生成相应的java文件
thrift -r -gen java user.thrift
(如果想要生成其他的文件,如ruby,则thrift -r -gen rb user.thrift)
gen-java下面有两个文件 User.java(对struct User的实现) 和 UserStorage.java(对service UserStorage的实现)
②使用Eclipse新建两个工程非别导入User.java与UserStorage.java文件
build path,引入lib/java下相关jar文件:
libthrift-0.7.0.jar
commons-codec-1.3.jar
httpcore-4.0.1.jar
slf4j-api-1.5.8.jar
commons-lang-2.5.jar
junit-4.4.jar
slf4j-log4j12-1.5.8.jar
commons-logging-1.1.1.jar
log4j-1.2.14.jar
httpclient-4.0.1.jar
servlet-api-2.5.jar
③Java 服务端代码:
/**
* @author 张进
*/
public class JavaServer implements UserStorage.Iface {
private User mUser;
public JavaServer(){
mUser = new User();
mUser.setId(100);
}
public static void main(String[] args) {
JavaServer handler = new JavaServer();
handler.startServer(handler,9090);
}
/**
* @param handler Server端实例
* @param port 绑定本机端口号
*/
public void startServer(JavaServer handler , int port){
try {
UserStorage.Processor processor = new UserStorage.Processor(handler);
TServerSocket serverTransport = new TServerSocket(port);
Factory portFactory = new TBinaryProtocol.Factory(true, true);
Args arg = new Args(serverTransport);
arg.processor(processor);
arg.protocolFactory(portFactory);
TServer server = new TThreadPoolServer(arg);
server.serve();
} catch (TTransportException e) {
e.printStackTrace();
}
}
@Override
public void set_user(String name) throws TException {
System.out.println("name is "+name);
mUser.setName(name);
}
@Override
public User get_user(int id) throws TException {
if(100 == id){
return mUser;
}else{
return new User(50, "默认用户");
}
}
}
④Java客户端代码
public class JavaClient extends UserStorage.Client {
public JavaClient(TProtocol prot) {
super(prot);
}
public static void main(String[] args) {
TTransport transport;
transport = new TSocket("localhost", 9090);
TProtocol protocol = new TBinaryProtocol(transport);
JavaClient client = new JavaClient(protocol);
try {
transport.open();
client.set_user("新用户");
User user = client.get_user(50);
System.out.println(">>>>>>>>"+user.name);
transport.close();
} catch (TTransportException e) {
e.printStackTrace();
} catch (TException e) {
e.printStackTrace();
}
}
}
⑥JAVA服务端与JAVA客户端运行结果:
server:
name is 新用户
client:
>>>>>>>>默认用户
1、首先安装Cygwin
Cygwin 是一个用于 Windows 的类 UNIX shell 环境。 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供的许多特性;以及 Bash shell 的改写版本和许多 UNIX 实用程序,它们提供大家熟悉的
UNIX 命令行界面。前一个组件是一个 Windows 动态链接库 (DLL)。后一个组件是一组基于 Cygwin DLL 的程序,其中许多是用未经修改的 UNIX 源代码编译的。它们合在一起提供大家熟悉的 UNIX 环境。
具体安装步骤请参见http://bension8708.blog.163.com/blog/static/81943864201112424922217/
官方文档上面说明了必须安装以下包:
GNU build tools (autoconf 2.60, automake 1.10, libtool 1.5.24)
boost 1.33.1+
g++ 4.0+
bison 2.3-1
boost 1.33.1-4
boost-devel 1.33.1-4
flex 2.5.33-1
pkgconfig
libtool
所以在安装Cygwin时请务必选择安装上述包,(图省事的童鞋可以安装Cygwin的所有包,安装完整版本的好处是可以尽可能的在windows环境下模拟linux环境,便于项目的移植!缺点就是太耗时了.。。。)
2、安装Ant
下载Ant,并且配置环境变量
(偶然的发现,我的Ant并没有放在cygwin模拟的/usr/local/bin下,因为我之前就下好了,并且在windows中已经配置过,然后我在Cygwin中使用ant居然也可以,呵呵,也许Cygwin环境变量和windows中是可以互相调用的,起码Ant是这样的!)
测试Ant:
ok,Ant配置成功
3、下载Thrift最新版本并解压缩后,开始安装与编译吧~
①进入Thrift主目录
./configure
②这个地方跟在ubuntu下有点不一样哦~
compiler/cpp
③编译
make make install
测试一下看看是否成功?
thrift -r
运行结果如图,ok,终于成功啦,我的机器有点慢,编译了好长时间。。。
4、编译Thrift支持Java的Jar包
cd ../.. 进入主目录
cd lib/java 进入存放jar文件的目录,
使用ant进行编译,成功生成build文件夹以及内部的jar包,如图
5、使用Thrift进行Java服务器与客户端的通信
①.编写user.thrift文件
struct User {
1: i32 id,
2: string name,
}
service UserStorage {
void set_user(1: string name)
User get_user(1: i32 id)
}
在此目录下运行thrift命令,生成相应的java文件
thrift -r -gen java user.thrift
(如果想要生成其他的文件,如ruby,则thrift -r -gen rb user.thrift)
gen-java下面有两个文件 User.java(对struct User的实现) 和 UserStorage.java(对service UserStorage的实现)
②使用Eclipse新建两个工程非别导入User.java与UserStorage.java文件
build path,引入lib/java下相关jar文件:
libthrift-0.7.0.jar
commons-codec-1.3.jar
httpcore-4.0.1.jar
slf4j-api-1.5.8.jar
commons-lang-2.5.jar
junit-4.4.jar
slf4j-log4j12-1.5.8.jar
commons-logging-1.1.1.jar
log4j-1.2.14.jar
httpclient-4.0.1.jar
servlet-api-2.5.jar
③Java 服务端代码:
/**
* @author 张进
*/
public class JavaServer implements UserStorage.Iface {
private User mUser;
public JavaServer(){
mUser = new User();
mUser.setId(100);
}
public static void main(String[] args) {
JavaServer handler = new JavaServer();
handler.startServer(handler,9090);
}
/**
* @param handler Server端实例
* @param port 绑定本机端口号
*/
public void startServer(JavaServer handler , int port){
try {
UserStorage.Processor processor = new UserStorage.Processor(handler);
TServerSocket serverTransport = new TServerSocket(port);
Factory portFactory = new TBinaryProtocol.Factory(true, true);
Args arg = new Args(serverTransport);
arg.processor(processor);
arg.protocolFactory(portFactory);
TServer server = new TThreadPoolServer(arg);
server.serve();
} catch (TTransportException e) {
e.printStackTrace();
}
}
@Override
public void set_user(String name) throws TException {
System.out.println("name is "+name);
mUser.setName(name);
}
@Override
public User get_user(int id) throws TException {
if(100 == id){
return mUser;
}else{
return new User(50, "默认用户");
}
}
}
④Java客户端代码
public class JavaClient extends UserStorage.Client {
public JavaClient(TProtocol prot) {
super(prot);
}
public static void main(String[] args) {
TTransport transport;
transport = new TSocket("localhost", 9090);
TProtocol protocol = new TBinaryProtocol(transport);
JavaClient client = new JavaClient(protocol);
try {
transport.open();
client.set_user("新用户");
User user = client.get_user(50);
System.out.println(">>>>>>>>"+user.name);
transport.close();
} catch (TTransportException e) {
e.printStackTrace();
} catch (TException e) {
e.printStackTrace();
}
}
}
⑥JAVA服务端与JAVA客户端运行结果:
server:
name is 新用户
client:
>>>>>>>>默认用户
相关文章推荐
- Thrift 学习笔记2——Windows环境下Thrift的安装、编译以及测试
- Thrift 学习笔记1——Ubuntu环境下Thrift的安装、编译以及测试 - 张进の专栏 - 博客频道 - CSDN.NET
- Thrift 学习笔记1——Ubuntu环境下Thrift的安装、编译以及测试
- Thrift 学习笔记1——Ubuntu环境下Thrift的安装、编译以及测试
- Cordova in action学习笔记一:windows以及mac安装环境配置
- Ubuntu环境下Thrift的安装、编译以及测试
- Python学习笔记1:windows下Python的安装,以及IDLE的使用
- Windows环境下QT学习笔记01:QT及QT Creator的下载及安装
- memcached学习笔记1(windows 7 64bit 环境下安装memcached)
- mesos下载、准备安装环境、编译以及测试
- redis-windows环境安装与测试+linux环境安装以及一些操作
- Ubuntu14.04 安装Android 编译环境之 环境变量设置1---学习笔记
- (转)memcached学习笔记1(windows 7 64bit 环境下安装memcached)
- mesos下载、准备安装环境、编译以及测试
- windows下安装node环境,以及grunt试水笔记
- 16、编译安装bind 9.10.6及queryperf性能测试 学习笔记
- react-native学习笔记--史上最详细Windows版本搭建安装React Native环境配置
- Windows环境的GNU安装以及使用makefile编译生成*.exe
- 刚开始学习Android遇到的一些问题---主要安卓环境安装Androidstudio以及模拟器测试真机测试
- Scala学习笔记 --- Centos7下安装Scala编译环境