私はJavaでThriftRemoteProcedure呼び出しフレームワークを実装しています。節約を設定してスケルトンコードを問題なく生成しましたが、実際に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
私が自分自身を含めたインスタンスの作成に関する部分であり、それが問題の原因である可能性があります。
私は誰かが私がしている何が悪いのかについてもっと多くの考えを持ってくれることを望んでいました。
さらに詳しい情報や説明が必要な場合はお知らせください。
編集:CassandraWikiTProtocol
からインスタンス化ステートメントを見つけました