thrift servlet

Thrift通常以独立服务存在,也支持HTTP协议,以servlet方式在Tomcat中运行。

 

一. 服务端Servlet

实现比较简单,只需实现TExtensibleServlet,并在getProcessor()中填充实现类。

/**
 * Thrift servlet
 */
@WebServlet(name="thrifttest",value="/thrifttest")
public class ThriftService extends TExtensibleServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected TProtocolFactory getInProtocolFactory() {
		TProtocolFactory factory = new TCompactProtocol.Factory();
		return factory;
	}

	@Override
	protected TProtocolFactory getOutProtocolFactory() {
		TProtocolFactory factory = new TCompactProtocol.Factory();
		return factory;
	}

	@Override
	protected TProcessor getProcessor() {
		// 接口实现类
		ThriftServiceImpl impl = new ThriftServiceImpl();

		// 返回处理器
		TProcessor tProcesser = new SimpleThriftService.Processor<SimpleThriftService.Iface>(impl); 
		return tProcesser;
	}
}

二. 客户端

/**
 * Http thrift client
 */
public static void httpClient() {  
	String url = "http://host:8080/servlet3/thrifttest";  
	try {
		TTransport transport = new THttpClient(url); 	         
		TProtocol protocol = new TCompactProtocol(transport); // HTTP通信协议     
		SimpleThriftService.Client client = new SimpleThriftService.Client(protocol);

		transport.open();  
		int val = client.getInt(10); 	// 调用方法
		System.out.println( "Val: " + val );

		transport.close();  
	} catch (TException e) {
		e.printStackTrace();
	}  
} 

 

三. 协议分析

 

猜你喜欢

转载自tcspecial.iteye.com/blog/2387952