2012-08-05 18 views
7

मैं अपाचे थ्रिफ्ट के आधार पर जावा सर्वर लिख रहा हूं, जो जावास्क्रिप्ट क्लाइंट से डेटा प्राप्त करेगा। मैंने जावा सर्वर पूरा कर लिया है, लेकिन समस्या यह है कि मैं जावास्क्रिप्ट क्लाइंट के लिए एक कामकाजी उदाहरण प्राप्त कर सकता हूं (मैं इसके लिए एक अच्छा उदाहरण नहीं ढूंढ पाया)। निर्माण दस्तावेज में उदाहरण बहुत उपयोगी नहीं हैं। मेरे वर्तमान जावास्क्रिप्ट ग्राहक नीचे है:अपाचे थ्रिफ्ट जावा-जावास्क्रिप्ट संचार

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

लेकिन कोड काम नहीं कर रहा - के रूप में जावा सर्वर फेंकता एक "आउट मेमोरी के" त्रुटि। मुझे नहीं पता कि त्रुटि मेरे क्लाइंट कोड या अपाचे थ्रिफ्ट के कारण है या नहीं।

मैं क्या गलत कर रहा हूं?

+0

क्या आपने JVM मेमोरी बढ़ाने की कोशिश की है? – kgautron

+0

हां, इससे मदद नहीं मिली। – John

+0

जावा में बहाव दुर्भावनापूर्ण रूप से ओओएम को फर्जी इनपुट पर फेंक देगा, ऐसा लगता है कि जेएस क्लाइंट कुछ गलत भेजता है। मुझे लगता है कि सर्वर-साइड पर आपकी प्रोटोकॉल परिभाषा 'isServerAlive()' विधि है? – favoretti

उत्तर

0

संचार में समस्या की समस्या की तरह दिखता है। शायद आप सर्वर और क्लाइंट पर विभिन्न प्रोटोकॉल या परिवहन का उपयोग करें। या उस प्रोटोकॉल के कार्यान्वयन में बग। // उदाहरण के रूप में मुझे थ्रिफ्ट-जावास्क्रिप्ट क्रमबद्धता में utf8 वर्णों के साथ बग मिला।

कृपया https://github.com/imysak/using-thrift पर देखें (मेरे दोस्त और मैंने संचार के इस सरल उदाहरण को जावा-नोड.जेएस को थ्रिफ्ट के माध्यम से लिखा)।

मुझे आशा है कि आप हमारे जेएस कार्यान्वयन से कुछ उपयोग कर सकते हैं।

0

Out Of Memory त्रुटि तब होती है जब आपका सर्वर TBinaryProtocol का उपयोग कर रहा है लेकिन आप इसे किसी अन्य तरीके से एक्सेस करने का प्रयास करते हैं, उदा। एक ब्राउज़र का उपयोग (जो HTTP बोलता है)। आईएमओ कि एक बग है। इसके बजाय कुछ अच्छा त्रुटि संदेश होना चाहिए।

फ़ाइलों को एक थ्रिफ्ट जावा सर्वर क्लाइंट के साथ एक थ्रिफ्ट जावास्क्रिप्ट क्लाइंट के साथ काम करने के तरीके को पूरे स्रोत में बिखरे हुए हैं। मैंने उन्हें यहां एक साथ परेशान किया: https://github.com/LukeOwncloud/ThriftJavaJavascriptDemo

संबंधित मुद्दे