2010-11-15 5 views
3

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

Я надеялся, что у кого-то будет больше представления о том, что происходит не так, как я.

Пожалуйста, дайте мне знать, если требуется дополнительная информация или пояснения.

Edit: я нашел заявление TProtocol инстанцирования от Cassandra Wiki

ответ

2

Вам необходимо вызвать метод open() на вашем TSocket, например, для того, чтобы соединить и получить ввода/вывода потоков это необходимо.

TSocket.java

+0

Кажется, что сработало. Большое спасибо! – efficiencyIsBliss