实现Thrift API时出错

时间:2010-11-15 23:52:46

标签: java exception implementation thrift

我正在用Java实现Thrift Remote Procedure调用框架。我设置了thrift并生成了我的框架代码而没有很多问题,但是现在我实际上使用的是API方法,我得到了奇怪的错误。

以下是我得到的错误:

Exception in thread "main" org.apache.thrift.transport.TTransportException: Cannot write to null outputStream
at org.apache.thrift.transport.TIOStreamTransport.write(TIOStreamTransport.java:142)
at org.apache.thrift.protocol.TBinaryProtocol.writeI32(TBinaryProtocol.java:163)
at org.apache.thrift.protocol.TBinaryProtocol.writeMessageBegin(TBinaryProtocol.java:91)
at SimonSays$Client.send_registerClient(SimonSays.java:102)
at SimonSays$Client.registerClient(SimonSays.java:96)
at simon.main(testClass.java:16)

我不认为我没有犯任何错误,只是为了确保,这是导致错误的代码:

TProtocol prot = new TBinaryProtocol(new TSocket("http://thriftpuzzle.facebook.com",9030));
    SimonSays.Client client = new SimonSays.Client(prot);

    client.registerClient("userEmailAddress@gmail.com");

错误据说是从client.registerClient()调用生成的,但这是对Thrift生成的代码的调用,这让我觉得我在设置连接本身时做错了。

关于制作TProtocol实例的部分我自己也包括在内,而这可能就是问题所在。

我希望有人能更多地了解我做错了什么。

如果需要更多信息或说明,请与我们联系。

编辑:我从Cassandra Wiki

找到了TProtocol实例化声明

1 个答案:

答案 0 :(得分:2)

您需要在open()实例上调用TSocket方法,以便连接并获取所需的输入/输出流。

来源:TSocket.java