2010-11-15 50 views
3

我正在用Java實現Thrift遠程過程調用框架。我設置了節儉並生成了我的框架代碼,但沒有太多問題,但現在我實際上使用了API方法,但出現了一些奇怪的錯誤。執行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("[email protected]"); 

該錯誤據說是由client.registerClient()調用產生的,但這是對Thrift生成的代碼的調用,這讓我覺得我在設置連接本身時做錯了什麼。

關於製作一個TProtocol實例的部分我包括我自己,並且很可能這就是問題所在。

我希望有人對我做錯了什麼有更多的想法。

請讓我知道是否需要更多信息或澄清。

編輯:我發現TProtocol實例化語句從Cassandra Wiki

回答

2

你需要調用open()方法對你TSocket實例,以便它連接並獲得輸入/輸出流需要。

來源:TSocket.java

+0

似乎已經工作。非常感謝! – efficiencyIsBliss 2010-11-16 00:43:21