thrift嵌入servlet

thrift中有个bug, 在收到随机上传的数据是会OutOfMemory, 服务直接crash掉.

详见: https://issues.apache.org/jira/browse/THRIFT-601

测试: telnet到服务端口, 随便输入什么, 会抛出Connection closed by foreign host.

我先在的解决方案是, 把thrift嵌入到servlet中:

1
2
3
4
5
6
7
8
9
10
import org.apache.thrift.server.TServlet;

import pptv.spider.thrift.SpiderService;

public class SpiderServlet extends TServlet {
public SpiderServlet() {
super(new SpiderService.Processor(new SpiderServiceImpl()),
new TBinaryProtocol.Factory());
}
}

在编写client端时, 把Client.java中的

1
TTransport transport = new TSocket("localhost", 8080);

改为

1
TTransport transport = new THttpClient("http://localhost:8080/servlet");