2012-08-05 10 views
7

Ich schreibe einen Java-Server basierend auf Apache Thrift, die Daten von einem Javascript-Client erhalten wird. Ich habe den Java-Server abgeschlossen, aber das Problem ist, dass ich ein funktionierendes Beispiel für den Javascript-Client bekommen kann (ich konnte kein gutes Beispiel dafür finden). Die Beispiele in der Build-Dokumentation sind nicht sehr hilfreich. Mein aktueller Javascript-Client ist unter:Apache Thrift Java-Javascript Kommunikation

function testServer() { 
    try { 
     var transport = new Thrift.Transport("http://127.0.0.1:9090"); 
     var protocol = new Thrift.Protocol(transport); 
     var client = new JavaEventClient(protocol); 

     var alive = client.isServerAlive(); 
    } catch(e) { 
    } 
} 

testServer(); 

Aber der Code funktioniert nicht - wie der Java-Server ein „Nicht genügend Speicher“ Fehler führt. Ich weiß nicht, ob der Fehler auf meinen Client-Code oder Apache Thrift zurückzuführen ist.

Was mache ich falsch?

+0

Haben Sie versucht, den JVM-Speicher zu erhöhen? – kgautron

+0

Ja, das hat nicht geholfen. – John

+0

Thrift in Java wird böswillig eine OOM auf gefälschte Eingabe werfen, es scheint, dass JS Client dort etwas falsch sendet. Ich nehme an, Ihre Protokolldefinition auf der Serverseite hat 'isServerAlive()' Methode? – favoretti

Antwort

0

Sieht aus wie ein Problem in der Kommunikation. Vielleicht verwenden Sie ein anderes Protokoll oder Transport auf Server und Client. oder Bug in Implementierungen dieser Protokolle. // als Beispiel habe ich einen Bug mit utf8-Zeichen in der Serialisierung von Spar-JavaScript gefunden.

Bitte schaut auf https://github.com/imysak/using-thrift (Mein Freund und ich schrieb dieses einfache Beispiel der Kommunikation Java-Node.js über Sparsamkeit).

Ich hoffe, Sie können etwas aus unserer JS-Implementierung verwenden.

0

Der Fehler Out Of Memory tritt auf, wenn Ihr Server TBinaryProtocol verwendet, Sie aber versuchen, auf eine andere Weise darauf zuzugreifen, z. mit einem Browser (der HTTP spricht). IMO das ist ein Fehler. Es sollte stattdessen eine nette Fehlermeldung sein.

Die Dateien, wie ein Thrift-Java-Server mit einem Thrift-Javascript-Client arbeiten, sind in der Quelle verstreut. Ich habe sie hier zusammen verwirrt: https://github.com/LukeOwncloud/ThriftJavaJavascriptDemo

Verwandte Themen