2011-10-20 15 views
9

मैं जावा आईडीएल में CORBA लगातार वस्तु कार्यान्वयन चला रहा हूँजावा आईडीएल: servertool पंजीकृत नहीं करता और लटका हुआ है

रूप Java IDL: The "Hello World" Example

में मैं ऊपर लेख

मैं लगातार पंजीकरण के लिए servertool इस्तेमाल किया में सही प्रक्रिया का पालन किया उदाहरण के रूप में दिखाया गया सर्वर। लेकिन जब मैं उस लेख में के रूप में सिंटेक्स के उपयोग से सर्वर को पंजीकृत करने की कोशिश की:

servertool > register -server PersistentServer -applicationName s1 -classpath path_to_server_class_files

मैं रुक जाता है और does not किसी भी बात करते हैं, तो मैं ctrl+c करने के लिए सामान्य मोड पर वापस करने के लिए है

क्या हो सकता है इस के साथ गलत ??

+0

मैं एक ही समस्या से गुजर रहा हूं। मैं http://download.java.net/jdk7/archive/b123/docs/technotes/guides/idl/PersistentHello.zip से वहां उदाहरण डाउनलोड करता हूं और readme.txt से चरणों का पालन करना शुरू करता हूं जहां चरण 5 बी पर मेरे पास एक है मुसीबत। अधिक विशेष रूप से, यदि मैं "रजिस्टर-सर्वर पर्सिस्टेंट सर्वर -प्लिकेशंसनाम एस 1-क्लासपाथ" चलाता हूं। ORT पोर्ट 1050 पर कॉन्टेक्टेड सर्वरtool में मुझे एक त्रुटि मिलती है "खराब सर्वर परिभाषा: मुख्य वर्ग नहीं मिला।" – bitek

+0

मैंने ओआरबीडी को एक पृष्ठभूमि प्रक्रिया के रूप में शुरू किया है जिसमें PersbentHello निर्देशिका के समान निर्देशिका में orb.db है; और मैंने PersistentHello निर्देशिका से servertool शुरू किया जहां PersistentServer कक्षा है। यदि आप स्ट्रिंग के लिए Google को खोजते हैं "खराब सर्वर परिभाषा: मुख्य श्रेणी नहीं मिली" तो आपको कुछ साल पहले 2-3 बग रिपोर्ट दिखाई देगी। मेरे पास कुछ विचार हैं जो कुछ काम करने की कोशिश करते हैं, मैं आपको बता दूंगा। – bitek

+0

@AlexButum आपके विचार के लिए धन्यवाद लेकिन अंत में मुझे अपना उत्तर http://www.cse.ohio-state.edu/~gurari/course/cis888w04/cis888w04su52.html#x76-590007.6 – mojtaba

उत्तर

1

समस्या यह है कि आपके जावा जेडीके स्थापना पथ में रिक्त स्थान हैं।

यदि आपका जेडीके रिक्त स्थान के साथ पथ पर स्थापित है उदाहरण के लिए "सी: \ प्रोग्राम फ़ाइलें \ जावा \ jdk1.7.0" तो आपको अपने पूर्ण पथ का उपयोग करके orbd और servertool शुरू करना होगा (विंडोज़ में आपको संक्षिप्त उपयोग करना होगा हाथ अंकन ~ [टिल्डा] के साथ) अर्थात्:

C: \ Progra ~ 1 \ जावा \ jdk1.7.0 \ बिन \ orbd -ORBInitialPort 1050 -serverPollingTime 200

C: \ Progra ~ 1 \ जावा \ jdk1 .7.0 \ bin \ servertool -ORBInitialPort 1050

सर्वरtool> रजिस्टर-सर्वर स्थायी धारक-अनुप्रयोग नाम MyApp -classpath।

Windows में (के रूप में idlj द्वारा उत्पन्न की गई फ़ाइलों के लिए आवश्यक classpath समायोजित) आप उपयोग कर छोटा नाम पथ पा सकते हैं: dir *.* /x

मामले में अपने एक वातावरण चर का उपयोग कर% JAVA_HOME% की तरह करने के लिए 'सी के बराबर होती है: \ Program फ़ाइलें \ जावा \ jdk1.7.0 "और फिर आप इसे PATH में जोड़ते हैं, यह नहीं काम करेगा, आपको शॉर्ट हैंडेशन (टिल्डा के साथ) यानी" सी: \ प्रोग्रा ~ 1 \ जावा \ jdk1.7.0 "

का उपयोग करना होगा

HINT: यदि आपका जेडीके बिना किसी स्पेस वाले पथ में स्थापित है, उदाहरण के लिए C: \ Java \ jdk1.7.0 तो आप कर सकते हैं एक पूर्ण पथ का उपयोग किए बिना टार्ट orbd और servertool और यह काम करेगा।

+0

पर मिलता है जो आप जेडीके संस्करण का उपयोग कर रहे हैं इसके लिए ? – ajduke

+0

विंडोज एक्सपी एसपी 3 32 बिट और ओपनजेडीके 1.7.0_147 पर नवीनतम ओरेकल जेडीके 7 लिनक्स (कुबंटू 64 बिट) सिस्टम पर। [इस पोस्ट] से टिप्पणियां पढ़ें (http://stackoverflow.com/questions/1947864/corba-javas-servertool-does-not-allow-me-to-register-a-server-class/1995029#1995029) – bitek

0

कृपया पूर्ण विवरण

के लिए Running CORBA Applications पढ़ जावा ठूंठ और कंकाल वर्गों 'idlj' आदेश से आईडीएल फ़ाइल संकलन के द्वारा बनाएँ।

idlj -fall IDLfile.idl 

संकलित स्रोत फ़ाइलों

javac IDLserver.java 
javac IDLclient.java 
or 

javac javac *.java IDLmodule/*.java 

प्रारंभ वस्तु अनुरोध ब्रोकर (ओर्ब) डेमॉन

unix: orbd -ORBInitialPort 4321 & 
windows: start orbd -ORBInitialPort 4321 

यूनिक्स पर, कमांड 'ps -e' करने के लिए सौंपा प्रक्रिया संख्या से पता चलता orbd। प्रक्रिया को मारने के लिए हत्या आदेश का उपयोग किया जा सकता है।

इसके चलते, डेमन उपनिर्देशिका orb.db में संदेश लिखता है। आह्वान सर्वर यूनिक्स: जावा IDLserver -ORBInitialHost स्थानीय होस्ट -ORBInitialPort 4321 & खिड़कियां: शुरू जावा IDLserver -ORBInitialHost स्थानीय होस्ट -ORBInitialPort 4321 ग्राहक

java IDLclient -ORBInitialHost localhost -ORBInitialPort 4321 

डिफ़ॉल्ट ओर्ब प्रारंभिक बंदरगाह आह्वान बंदरगाह है 900 (केवल एक रूट इसे सौरलिस पर शुरू कर सकता है)।

+0

"(केवल एक रूट इसे सोलारिस पर शुरू कर सकता है)"। दरअसल नहीं!। वास्तव में यह सोलारिस विंडोज और लिनक्स दोनों से भिन्न था क्योंकि इसमें 'net_privaddr' विशेषाधिकार है जिसे आप किसी उपयोगकर्ता, प्रक्रिया, निष्पादन योग्य या सेवा को असाइन कर सकते हैं। अधिक सुरक्षित – peterh

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