使用TServerSocket创建阻塞式IO,TThreadPoolServer提供线程池服务模型。
服务端HelloTThreadPoolServer.java:
package cn.slimsmart.thrift.demo.helloworld;
import org.apache.thrift.TException;
import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TThreadPoolServer;
import org.apache.thrift.transport.TServerSocket;
/**
* 注册服务端
* 线程池服务模型,使用标准的阻塞式IO,预先创建一组线程处理请求。 TThreadPoolServer
*/
public class HelloTThreadPoolServer {
// 注册端口
public static final int SERVER_PORT = 8080;
public static void main(String[] args) throws TException {
TProcessor tprocessor = new HelloWorld.Processor<HelloWorld.Iface>(new HelloWorldImpl());
// 阻塞IO
TServerSocket serverTransport = new TServerSocket(SERVER_PORT);
//多线程服务模型
TThreadPoolServer.Args tArgs = new TThreadPoolServer.Args(serverTransport);
tArgs.processor(tprocessor);
//客户端协议要一致
tArgs.protocolFactory(new TBinaryProtocol.Factory());
// 线程池服务模型,使用标准的阻塞式IO,预先创建一组线程处理请求。
TServer server = new TThreadPoolServer(tArgs);
System.out.println("HelloTThreadPoolServer start....");
server.serve(); // 启动服务
}
}
客户端HelloClient.java:
package cn.slimsmart.thrift.demo.helloworld;
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;
/**
* 客户端调用HelloTSimpleServer,HelloTThreadPoolServer
* 阻塞
*/
public class HelloClient {
public static final String SERVER_IP = "127.0.0.1";
public static final int SERVER_PORT = 8080;
public static final int TIMEOUT = 30000;
public static void main(String[] args) throws TException {
// 设置传输通道
TTransport transport = new TSocket(SERVER_IP, SERVER_PORT, TIMEOUT);
// 协议要和服务端一致
//使用二进制协议
TProtocol protocol = new TBinaryProtocol(transport);
//创建Client
HelloWorld.Client client = new HelloWorld.Client(protocol);
transport.open();
String result = client.sayHello("jack");
System.out.println("result : " + result);
//关闭资源
transport.close();
}
}