Я реализую инфраструктуру вызовов Thrift Remote Процедура в Java. Я настроил бережливость и сгенерировал свой скелетный код без особых проблем, но теперь, когда я на самом деле использую методы 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
экземпляра, которую я включил в себя, и, вероятно, именно в этом проблема.
Я надеялся, что у кого-то будет больше представления о том, что происходит не так, как я.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация или разъяснения.
Редактировать: я нашел TProtocol
оператор создания экземпляра из Cassandra Wiki