2011-06-20 6 views
5

मुझे शैल स्क्रिप्ट (लिनक्स आधारित ऐप से कहा जाता है) से जावा एप्लिकेशन से जानकारी पास करने की आवश्यकता है।क्या जावा सिस्टम वी लिनक्स संदेश कतारों के साथ इंटरैक्ट कर सकता है?

नामित पाइप दर्द हैं क्योंकि मैं पाइप के पढ़ने/लिखने के सिरों पर जटिल प्रतिक्रियाओं पर विचार किए बिना सेवा को शुरू/बंद नहीं कर सकता।

सॉकेट कठिन हैं क्योंकि अगर सुन प्रक्रिया कोई कतार तंत्र है पुन: प्रारंभ होने, और सरल कार्यान्वयन नया सॉकेट लगातार बनाया जा आवश्यकता होती है (और कुछ खोल स्क्रिप्ट की जांच और पुनः आरंभ-सॉकेट के साथ बहुत जटिल हो जाएगा, और कतार कोड)।

मैं हाल ही में इन सिस्टम वी/पॉज़िक्स लिनक्स संदेश कतार के बारे में पढ़ रहा था। मैं फेडोरा 12 चला रहा हूं, और आश्चर्य है कि इन संदेश कतारों को कॉन्फ़िगर करने का कोई अच्छा तरीका है और जावा से उनके साथ बातचीत करें।

+1

[जावा पॉजिक्स आईपीसी क्या कोई एपीआई है?] का संभावित डुप्लिकेट है? (Http://stackoverflow.com/questions/2278208/java-posix-ipc-is-there-an-api) – bdonlan

+0

आप कैसे बातचीत करना चाहते हैं उनके साथ एक शेल स्क्रिप्ट से? – Gabe

+1

जेएनआई से जुड़ने की तुलना में एक पॉज़िक्स संदेश कतार में एक शेल स्क्रिप्ट को बांधने के लिए एक सरल सी रैपर लिखना आसान है ... – bdonlan

उत्तर

1

आप उन्हें सीधे उपयोग नहीं कर सकते हैं, आपको उन्हें एक साथ इंटरफ़ेस करने के लिए कुछ जेएनआई जादूगर करना होगा।

पाइप्स के साथ आपको क्या समस्याएं हैं? जावा उन्हें जेनेरिक फाइलों के रूप में देखता है। मैंने उन्हें बड़े पैमाने पर उपयोग नहीं किया है, लेकिन मुझे पाइप्स के साथ कोई वास्तविक समस्या नहीं थी। यदि उत्पादक जारी नहीं रख सकते हैं तो पाइप रीडर को केवल पाइप को फिर से खोलने की आवश्यकता होती है।

लेकिन यदि कोई पक्ष विफल रहता है, तो दूसरी तरफ दूसरे को ठीक होने के लिए इंतजार कर रहा है।

आपको बस पाइप से बफर पढ़ने से सावधान रहना होगा। यदि आप पाइप से एक बफर में पढ़ते हैं, और फिर विफल हो जाते हैं, तो वह डेटा खो जाता है।

+0

मैं नामित पाइप से लड़ने लगा, वे थोड़ा अजीब थे कि पूरी इनपुट/आउटपुट स्ट्रीम क्लास कन्स्ट्रक्टर पर अवरुद्ध हो जाएगी जब तक कि पाइप के दूसरे छोर खुले न हों, इसलिए आपको इसके आसपास काम करना होगा, और जैसा कि आपने उल्लेख किया है, ध्यान से ईओएफ के लिए निगरानी करें और फिर से खोलें। इसे सही करने के लिए आवश्यक 3 या 4 क्विर्क को समझने के लिए चारों ओर बंदरगाह लग रहा था, लेकिन मुझे लगता है कि मुझे अब मिल गया है, यह सिर्फ सुरुचिपूर्ण प्रतीत नहीं हुआ था, और चीजें थोड़ा सा अंतर्ज्ञानी थीं। स्क्रिप्ट को सही करने का प्रयास करना एक और बड़ा मुद्दा था, बिल्ली, टी और अन्य आम यूटिल बहुत अजीब तरीके से कार्य करते हैं जब दूसरा अंत खुलता/बंद हो जाता है। –