2012-08-05 102 views
7

我正在編寫一個基於Apache Thrift的Java服務器,它將從Javascript客戶端接收數據。我已經完成了Java服務器,但問題是我可以爲Javascript客戶端獲得一個工作示例(我無法找到它的一個好例子)。構建文檔中的示例並不是非常有用。我現在的JavaScript客戶端低於:Apache Thrift Java-Javascript通信

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(); 

但代碼不工作 - 像Java服務器拋出一個「走出內存」錯誤。我不知道錯誤是由於我的客戶端代碼還是Apache Thrift造成的。

我在做什麼錯?

+0

您是否嘗試過增加JVM內存? – kgautron 2012-08-05 21:57:10

+0

是的,這沒有幫助。 – John 2012-08-05 21:59:43

+0

Java中的節儉會惡意地將一個OOM投入虛假輸入,似乎JS客戶端在那裏發送錯誤。我想你在服務器端的協議定義有'isServerAlive()'方法? – favoretti 2012-08-05 22:02:33

回答

0

看起來像通信中的問題問題。也許你在服務器和客戶端上使用不同的協議或傳輸。或該協議的實現中的錯誤。 //以thrift-javascript序列化中的utf8字符爲例,我發現了bug。

請看看https://github.com/imysak/using-thrift(我的朋友和我通過thrift編寫了這個通信Java-Node.js的簡單示例)。

我希望你可以使用我們的JS實現中的東西。

0

當您的服務器使用TBinaryProtocol但您嘗試以其他方式訪問它時,會出現Out Of Memory錯誤,例如,使用瀏覽器(會說HTTP)。海事組織,這是一個錯誤。應該有一些不錯的錯誤信息。

如何使Thrift Java服務器與Thrift Javascript客戶端一起工作的文件分散在源代碼中。我在這裏困惑他們:https://github.com/LukeOwncloud/ThriftJavaJavascriptDemo