0

我正在尝试制作一个可以进行 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(),但我仍然得到错误。

4

1 回答 1

0

当您将 thrift jar 包含到您的项目中时,您还必须将它们添加到 Tomcat 库中

首先确保您的外部 jar 在您的项目 Java 构建路径中...

  1. 右键单击您的项目,单击Properties
  2. 在下面Deployment Assembly,单击Add...
  3. 双击Java Build Path Entries...并选择要包含的 jars/libraries
于 2013-09-07T02:46:35.507 回答