2010-11-15 30 views
3

Je suis en train d'implémenter la structure d'appel Thrift Remote Procedure dans Java. J'ai mis en place une économie et généré mon code squelette sans trop de problèmes, mais maintenant que j'utilise les méthodes de l'API, j'ai d'étranges erreurs.Erreur lors de l'implémentation de l'API Thrift

Voici les erreurs que je reçois:

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) 

Je ne pense pas que je ne suis pas faire d'erreur, mais juste pour vous, voici le code qui est conduit aux erreurs:

TProtocol prot = new TBinaryProtocol(new TSocket("http://thriftpuzzle.facebook.com",9030)); 
    SimonSays.Client client = new SimonSays.Client(prot); 

    client.registerClient("[email protected]"); 

L'erreur est censée être générée à partir de l'appel client.registerClient(), mais c'est un appel au code généré par Thrift, ce qui me fait penser que je fais quelque chose de mal à mettre en place la connexion elle-même.

La partie sur la création d'une instance TProtocol Je me suis inclus, et il est probable que c'est là que réside le problème. J'espérais que quelqu'un aurait plus d'idée de ce qui ne va pas que je fais.

S'il vous plaît laissez-moi savoir si plus d'informations ou de clarification est nécessaire.

Edit: Je trouve la déclaration TProtocol instanciation du Cassandra Wiki

Répondre

2

Vous devez appeler la méthode open() sur votre TSocket exemple afin de se connecter et obtenir l'entrée/sortie des flux dont il a besoin.

Source: TSocket.java

+0

Semble avoir travaillé. Merci beaucoup! – efficiencyIsBliss