我正在尝试制作一个可以进行 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()
但我仍然收到错误。
最佳答案
虽然您将 thrift jar 包含到您的项目中,但您还必须将它们添加到 Tomcat 库中
首先确保您的外部 jar 在您的项目 Java 构建路径中...
- 右键单击您的项目,单击
Properties
- 在
Deployment Assembly
下,单击Add...
- 双击
Java Build Path Entries...
并选择您要包含的 jar/库
关于java - Eclipse:Tomcat Servlet 中的 Thrift,ClassNotFoundException TException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604723/