我正在用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
实例化声明