我正在尝试制作一个可以进行 Apache Thrift 调用的 Java servlet,但是我在启动 servlet 时遇到了麻烦。
我有一个thrift 客户端,一个用于调用 thrift 服务器的 Java 类
public class ThriftClient {
static TTransport transport;
static TProtocol protocol;
static MyService.Client client;
static long xtk_pointer;
public static void openSocket() throws TException {
transport = new TSocket("localhost", 9090);
transport.open();
protocol = new TBinaryProtocol(transport);
client = new MyService.Client(protocol);
}
我有一个java servlet,它通过 thrift 客户端打开一个套接字
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
out.println("Hello World");
}
void startThrift(String [] args) {
try {
ThriftClient.openSocket();
但是,当我尝试运行这个 servlet(使用 eclipse 和 tomcat 服务器)时,我得到一个错误,比如
SEVERE: A child container failed during start
和ClassNotFoundException
一个org.apache.thrift.TException
编辑:我所要做的就是将 thrift jar 包含到 Tomcat 服务器的类路径中。请看下面我的回答
我已经使用了没有任何 ClassNotFoundExceptions 的 thrift 客户端,并且 servlet 也可以自己工作。但是,一旦我添加ThriftClient.openSocket();
到 servlet 中,它就会中断,所以我感觉 Thrift 和 Tomcat 在某种程度上发生了冲突。有任何想法吗?
编辑:奇怪的部分是我从不调用该方法startThrift()
,但我仍然得到错误。