使用Mac编写Thirft的HelloWorld项目-创新互联
前言
网站题目:使用Mac编写Thirft的HelloWorld项目-创新互联
标题来源:http://azwzsj.com/article/dspods.html
最近在hive新增Thirft接口,于是学习了一下Thirft的使用
十多年的祁县网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整祁县建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“祁县网站设计”,“祁县网站推广”以来,每个客户项目都认真落实执行。步骤 准备工作- brew install thrift安装thrift
- 创建maven项目并引入依赖
org.apache.thrift libthrift 0.12.0
- 根据thrift文件生成java基类
在resource下创建一个hello.thrift文件
namespace java service.demo
service service.demo.HelloWorld{string sayHello(1: string param)
}
进入resource,thrift -r -gen java hello.thrift
会在当前路径创建出一个gen-java.service.demo的文件夹。文件夹下面有Hello.java文件,将其移动到main目录的service.demo包中
- 实现IFace接口
package service.demo;
import org.apache.thrift.TException;
public class HelloWorldIfaceImpl implements HelloWorld.Iface {public String sayHello(String param) throws TException {return "hello! "+ param;
}
}
- 构建服务端并启动
package service.demo;
import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;
public class HelloWorldServer {public static void main(String[] args) {try {System.out.println("Server Starting....");
// TServer的参数,并添加需要的处理过程和协议
TServer.Args tArgs = new TServer.Args(new TServerSocket(666));
// 1.过程
TProcessor tprocessor = new HelloWorld.Processor(new HelloWorldIfaceImpl()); // 构造server的处理过程
tArgs.processor(tprocessor);
// 2.协议
tArgs.protocolFactory(new TBinaryProtocol.Factory()); // 选用Protocol协议
// 构建server并启动
TServer server = new TSimpleServer(tArgs);
server.serve();
}catch (TTransportException e) {e.printStackTrace();
}
}
}
启动后,开源看到日志输出
3. 创建客户端并访问服务端
package service.demo;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TTransportException;
public class HelloWorldClient {public static void main(String[] args) {System.out.println("Client starting....");
TTransport transport = null;
try {// 绑定通信端口
transport = new TSocket("localhost", 666, 30000);
transport.open();
// 构建协议,注意和服务端一致
TProtocol protocol = new TBinaryProtocol(transport);
// 创建客户端
HelloWorld.Client client = new HelloWorld.Client(protocol);
// 客户端请求服务端,获得结果并输出
String result = client.sayHello("Spider-Man");
System.out.println(result);
} catch (TTransportException e) {e.printStackTrace();
} catch (TException e) {e.printStackTrace();
} finally {if (null != transport) {transport.close();
}
}
}
}
运行后成功拿到结果
负责连接调度、服务的生命周期,定义接口是TServer
- TSimpleServer:简单的阻塞服务端
- TThreadPoolServer:使用线程池的处理请求的阻塞服务端
- THsHaServer:使用线程池处理请求的基于 NIO 的非阻塞服务端
- TThreadedSelectorServer:使用多种线程池的基于 NIO 的非阻塞服务端
处理请求,具体的实现由生成的代码处理,定义接口是 TProcessor
- TBaseProcessor:同步处理的 Processor
- TBaseAsyncProcessor:异步处理的 Processor
- TMultiplexedProcessor:支持多个服务的同步 Processor
请求协议,数据的编解码实现,定义接口是 TProtocol
- TBinaryProtocol:二进制协议
- TCompactProtocol:压缩协议
- TJSONProtocol:JSON 格式协议
- TMultiplexedProtocol:支持多个 Processor 的封装协议,依赖于其他协议
底层的连接,提供了读写的抽象实现;服务端定义是 TServerTransport
- TServerSocket: 基于 ServerSocket 的服务端 Transport
- TNonblockingServerSocket:基于 ServerSocketChannel 的服务端 Transport
- TSaslTransport:支持 SSL 加密的 Transport
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站题目:使用Mac编写Thirft的HelloWorld项目-创新互联
标题来源:http://azwzsj.com/article/dspods.html