इलेक्ट्रॉनिक दस्तावेज़ों के साथ काम करने की तकनीकें डॉकफ़्लो। ग्लोबल सिस्टम के भीतर ग्लोबल डॉकफ्लो



रिपोर्ट में शामिल होना चाहिए:

    एक अच्छी तरह से कार्यशील कार्यक्रम द्वारा हल की गई समस्या का विवरण।

    डिबग किए गए प्रोग्राम के लिए उपयोगकर्ता की मार्गदर्शिका, जिसमें सभी प्रोग्राम फ़ंक्शंस के इंटरफ़ेस का विवरण शामिल है।

    आवश्यक टिप्पणियों के साथ कार्यक्रम सूची.

  1. प्रश्नों पर नियंत्रण रखें

          कोरबा क्या है?

          क्या हुआ है आईडीएल? यह किस लिए है?

          क्लाइंट और सर्वर कैसे इंटरैक्ट करते हैं?कोरबा?

          उनके बीच डेटा कैसे स्थानांतरित किया जाता है?

          नेम सर्वर किसके लिए है?

          इसकी शुरुआत कैसे होती है कोरबासर्वर?

  1. साहित्य

    केन अर्नोल्ड, जेम्स गोसलिंग, डेविड होम्स।जावा™ प्रोग्रामिंग भाषा।

    आधिकारिक साइटजावाएचटीटीपी:// जावा. सूरज. कॉम/ (पाठ्यपुस्तक के साथ रूसी में एक अनुभाग है)।

    Java™ 2 SDK, मानक संस्करण दस्तावेज़ीकरण - http://java.sun.com/products/jdk/1.5/index.html।

    जेम्स गोसलिंग, बिल जॉय, गाइ स्टील।भाषा विशिष्टताजावा ( जावा भाषा विशिष्टता एचटीटीपी :// www . javasoft . कॉम / डॉक्स / पुस्तकें / jls /). रूसी भाषा में अनुवाद -एचटीटीपी:// www. विश्वविद्यालय- वोलोग्दा. एसी. आरयू/ जावा/ jls/ अनुक्रमणिका. एचटीएमएल

    आधिकारिक परियोजना वेबसाइटग्रहणएचटीटीपी:// www. ग्रहण. संगठन/.

  1. परिशिष्ट 1। कोरबा

तकनीकी कोरबा (सामान्यवस्तुअनुरोधदलालवास्तुकला) एक संघ द्वारा प्रस्तावित वितरित अनुप्रयोगों को लिखने के लिए एक मानक हैहे भगवान (खुलाप्रबंधसमूह). उदाहरण के लिए, CORBA ऑब्जेक्ट बनाकर, हम उन समस्याओं को हल करने के लिए आवश्यक समय को काफी कम कर सकते हैं जिनके लिए बड़ी मात्रा में गणना की आवश्यकता होती है। यह CORBA ऑब्जेक्ट को विभिन्न मशीनों पर रखकर संभव है। प्रत्येक दूरस्थ वस्तु एक विशिष्ट उपकार्य को हल करती है, जिससे ग्राहक को अनावश्यक कार्य से राहत मिलती है।

CORBA का मूल ऑब्जेक्ट रिक्वेस्ट ब्रोकर है। ओआरबी एक वितरित नेटवर्क वातावरण में वस्तुओं की परस्पर क्रिया का प्रबंधन करता है। IIOP (इंटरनेट इंटर-ओआरबी प्रोटोकॉल) ओआरबी के बीच बातचीत के लिए एक विशेष प्रोटोकॉल है।

क्लाइंट एड्रेस स्पेस में कार्य विशेष वस्तु, जिसे ठूंठ कहा जाता है। क्लाइंट से अनुरोध प्राप्त करने के बाद, यह अनुरोध मापदंडों को एक विशेष प्रारूप में पैक करता है और इसे सर्वर, या बल्कि कंकाल तक पहुंचाता है।

स्केलेटन एक ऑब्जेक्ट है जो सर्वर एड्रेस स्पेस में संचालित होता है। क्लाइंट से अनुरोध प्राप्त करने के बाद, यह उसे अनपैक करता है और सर्वर पर भेजता है। स्केलेटन सर्वर की प्रतिक्रियाओं को भी परिवर्तित करता है और उन्हें क्लाइंट (स्टब) तक भेजता है।

जावा तकनीक का उपयोग करके किसी भी CORBA एप्लिकेशन को लिखने के लिए, आपके पास दो चीजें होनी चाहिए - JDK1.5 पैकेज स्थापित और idlj कंपाइलर (…\ jdk 1.5.0\ बिन\ idlj. प्रोग्राम फ़ाइल). JDK CORBA ऑब्जेक्ट के साथ काम करने के लिए कक्षाओं का एक सेट प्रदान करता है, और idlj IDL भाषा को जावा में मैप करता है।

6 .1 एक सरल कॉर्बा एप्लिकेशन बनाना

      1. एक इंटरफ़ेस लिखना

निर्माण कोरबाआवेदन चालू जावाएक इंटरफ़ेस विवरण भाषा का उपयोग करके किसी दूरस्थ ऑब्जेक्ट के लिए एक इंटरफ़ेस लिखने से शुरू होता है (इंटरफेसपरिभाषाभाषा, आईडीएल).

आइए बनाएंफ़ाइलhello.idl

मॉड्यूल HelloApp

इंटरफ़ेस नमस्ते

स्ट्रिंग सेहैलो();

वनवे शून्य शटडाउन();

यह इंटरफ़ेस केवल दो विधियों का वर्णन करता हैशट डाउनऔर हैलो कहें . इसके अलावा, यह हमारे लिए कोई मायने नहीं रखता कि ये विधियां क्या करती हैं, मुख्य बात यह है कि हम यह निर्धारित करें कि वे मौजूद हैं और यह निर्धारित करें कि उनके पास कौन से इनपुट और आउटपुट पैरामीटर हैं।

आगे आपको कंपाइलर चलाना चाहिएआईडीएल- को- जावाidlj:

idlj – गिरनानमस्ते. आईडीएल

वर्तमान निर्देशिका में एक नया फ़ोल्डर प्रकट हुआ हैनमस्ते अनुप्रयोग , जिसमें छह जावा फ़ाइलें हैं। उनमें से प्रत्येक का अपना उद्देश्य है।

    नमस्तेPOA. जावाजावा- एक अमूर्त वर्ग जो सर्वर स्केलेटन से अधिक कुछ नहीं है (कंकाल) और सर्वर कार्यक्षमता प्रदान करता है।

    _ हेलोस्टब. जावा- एक वर्ग जो कार्यान्वयन करता हैठूंठ ( ठूंठ) ग्राहक। प्रदानग्राहक कार्यक्षमता.

    हेलो हेल्पर. जावाऔर हेलोहोल्डर. जावा- कक्षाएं जो सहायक कार्य प्रदान करती हैंकोरबावस्तुएं.

    हेलोऑपरेशंस. जावा- एक वर्ग जिसमें इंटरफ़ेस का विवरण होता हैनमस्तेभाषा में जावा.

    नमस्ते. जावा– वर्ग – उत्तराधिकारीहेलोऑपरेशंस, सहायक इंटरफ़ेससंगठन. हे भगवान. कोरबा. वस्तु.

      1. एक सर्वर बनाना

अब हमारा काम एक क्लास लिखना है जो इंटरफ़ेस को लागू करता हैनमस्ते . हमारे मामले में यह होगानमस्तेImpl . कृपया ध्यान दें कि यह वर्ग का उत्तराधिकारी हैहेलोPOA . में नमस्तेImpl में घोषित तरीकेनमस्ते . आईडीएल .

कार्य को सरल बनाने के लिए विधियों की घोषणा फ़ाइल से ली जा सकती है हेलोऑपरेशंस . जावा , उत्पन्न jdlj .

निजी ओर्ब ओर्ब;

ओर्ब = ओर्ब_वैल;

सार्वजनिक स्ट्रिंग सेहैलो() (

वापसी "\nहैलो वर्ल्ड!!\n";

सार्वजनिक शून्य शटडाउन() (

ओर्ब.शटडाउन(गलत);

अगला कदम वास्तविक बनाना हैएप्लिकेशन का सर्वर भाग. यह क्लास होगीहेलोसर्वर.

इसका एक ही तरीका होगा - मानक कार्य मुख्य.

पहली चीज़ जो हम करते हैं वह एक ORB बनाना है। फिर हम रिमोट ऑब्जेक्ट क्लास का एक उदाहरण बनाते हैं (नमस्तेImpl) और इसे ओआरबी में पंजीकृत करें। आगे हम कॉल करते हैं विशेष सेवानाम (NameService) और उसमें दूरस्थ ऑब्जेक्ट का नाम पंजीकृत करें ताकि ग्राहक उसे ढूंढ सके।

आइए इन चरणों पर करीब से नज़र डालें।

1. ओआरबी का निर्माण और आरंभीकरण। स्थैतिक विधि को कॉल करके निर्मित किया गयाइस मेंओआरबी वर्ग

2. रिमोट ऑब्जेक्ट क्लास का एक उदाहरण बनाना और उसे ओआरबी में पंजीकृत करना

helloImpl.setORB(orb);

3. नामकरण संदर्भ प्राप्त करना (नामकरण संदर्भ)

org.omg.CORBA. ऑब्जेक्ट objRef =

पहली पंक्ति में हमें नाम सेवा (NameService) का एक ऑब्जेक्ट संदर्भ मिलता है। लेकिन वास्तव में यह एक सामान्य CORBA ऑब्जेक्ट है और इसे नामकरण संदर्भ (NamingContext) के रूप में उपयोग करने के लिए, आपको विधि को कॉल करने की आवश्यकता हैसँकराकक्षा नामकरणकॉन्टेक्स्टहेल्पर , जो इस CORBA ऑब्जेक्ट को निर्दिष्ट करता प्रतीत होता है।

4. दूरस्थ वस्तु का नाम पंजीकृत करना (नमस्तेImpl)

स्ट्रिंग नाम = "हैलो";

एनसीआररेफ. पुनः बाँधना (पथ, href);

नाम पंजीकृत किया गया है ताकि ग्राहक दूरस्थ वस्तु ढूंढ सके। इस उद्देश्य की पूर्ति कार्य द्वारा की जाती हैपुनः बाँधना (नामघटकएनसी, वस्तुओबीजे) इंटरफेस नामकरण प्रसंग.

5. ग्राहक से अनुरोध की प्रतीक्षा करना

ओर्ब. दौड़ना();

सर्वर अब उपयोग के लिए तैयार है.

// हेलोसर्वर.जावा

HelloApp आयात करें।*;

org.omg आयात करें. सहनामकरण.*;

आयात org.omg.CORBA.*;

org.omg आयात करें. पोर्टेबलसर्वर.*;

org.omg आयात करें. पोर्टेबलसर्वर.POA;

java.util आयात करें। गुण;

वर्ग HelloImpl HelloPOA का विस्तार करता है (

निजी ओर्ब ओर्ब;

सार्वजनिक शून्य सेटओआरबी(ओआरबी ओर्ब_वैल) (

ओर्ब = ओर्ब_वैल;

// सेहेलो() विधि लागू करें

सार्वजनिक स्ट्रिंग सेहैलो() (

वापसी "\nहैलो वर्ल्ड!!\n";

// शटडाउन() विधि लागू करें

सार्वजनिक शून्य शटडाउन() (

ओर्ब.शटडाउन(गलत);

पब्लिक क्लास हेलोसर्वर(

सार्वजनिक स्थैतिक शून्य main (String [] args) (

कोशिश (

ORB ओर्ब = ORB.init(args, null);

// रूटपोआ का संदर्भ प्राप्त करें और POAManager को सक्रिय करें

POA रूटपोआ = POAHelper.narow(orb.resolve_initial_references("RootPOA"));

Rootpoa.the_POAManager().activate();

// नौकर बनाएं और इसे ओआरबी के साथ पंजीकृत करें

HelloImpl helloImpl = नया HelloImpl();

helloImpl.setORB(orb);

// नौकर से वस्तु संदर्भ प्राप्त करें

org.omg.CORBA. ऑब्जेक्ट रेफरी = rootpoa.servant_to_reference(helloImpl);

नमस्ते href = HelloHelper.narow(ref);

// NameService नाम सेवा का आह्वान करता है

orb.resolve_initial_references("NameService");

// NamingContextExt का उपयोग करें जो इंटरऑपरेबल का हिस्सा है

// नामकरण सेवा (आईएनएस) विशिष्टता।

NamingContextExt ncRef = NamingContextExtHelper.narow(objRef);

// नामकरण में ऑब्जेक्ट रेफरेंस को बाइंड करें

स्ट्रिंग नाम = "हैलो";

NameComponent पथ = ncRef.to_name(नाम);

ncRef.rebind(पथ, href);

System.out.println('हैलोसर्वर तैयार है और प्रतीक्षा कर रहा है...');

// ग्राहकों से आमंत्रण की प्रतीक्षा करें

ओर्ब.रन();

पकड़ो (अपवाद ई) (

System.err.println('ERROR:' + e);

System.out.println('हैलोसर्वर बाहर निकल रहा है...');

      1. एक ग्राहक बनाना

चलिए क्लाइंट के लिए कोड लिखने की ओर बढ़ते हैं।

क्लाइंट एप्लिकेशन लिखने के लिए बुनियादी चरण

    ओआरबी निर्माण और आरंभीकरण

    नाम सेवा संदर्भ प्राप्त करना (नामकरण प्रसंग)

    किसी दूरस्थ वस्तु को ढूँढना

    सेहेलो विधि को कॉल करना।

    शटडाउन विधि को कॉल करना।

जैसा कि आप देख सकते हैं, पहले दो बिंदु सर्वर एप्लिकेशन बनाने के चरणों से मेल खाते हैं, इसलिए हम उन पर विचार नहीं करेंगे।

तीसरा बिंदु भी लागू करने में काफी सरल है। एक वस्तु बनाई जाती हैनामघटक. विधि कहलाती हैसंकल्प (नामघटकपथ), जो किसी दूरस्थ वस्तु को नाम (मानक) से खोजता हैकोरबाएक वस्तु)। विधि का उपयोग करनासँकरा (संगठन. हे भगवान. कोरबा. वस्तुओबीजे) कक्षा हेलो हेल्पर(उत्पन्नidljकंपाइलर) हमें इंटरफ़ेस का एक ऑब्जेक्ट संदर्भ मिलता हैनमस्ते.

स्ट्रिंग नाम = "हैलो";

अब आप विधि को कॉल कर सकते हैंहैलो कहें:

तरीकाशट डाउनसर्वर बंद कर देता है.

helloImpl.shutdown();

//testClient.java

HelloApp आयात करें।*;

org.omg आयात करें. सहनामकरण.*;

org.omg आयात करें. सहनामकरण. NamingContextPackage.*;

आयात org.omg.CORBA.*;

सार्वजनिक वर्ग HelloClient

{

स्थिर नमस्ते helloImpl;

सार्वजनिक स्थैतिक शून्य main (String [] args)

{

कोशिश (

//ओआरबी बनाएं और प्रारंभ करें

ORB ओर्ब = ORB.init(args, null);

// रूट नामकरण संदर्भ प्राप्त करें

org.omg.CORBA. ऑब्जेक्ट objRef =

orb.resolve_initial_references("NameService");

//NamingContext के बजाय NamingContextExt का उपयोग करें। यह है

// इंटरऑपरेबल नामकरण सेवा का हिस्सा।

NamingContextExt ncRef = NamingContextExtHelper.narow(objRef);

// नामकरण में ऑब्जेक्ट संदर्भ को हल करें

स्ट्रिंग नाम = "हैलो";

helloImpl = HelloHelper.narow(ncRef.resolve_str(name));

System.out.println('सर्वर ऑब्जेक्ट पर एक हैंडल प्राप्त किया:' + helloImpl);

System.out.println(helloImpl.sayHello());

helloImpl.shutdown();

) पकड़ें (अपवाद ई) (

System.out.println('ERROR:' + e);

e.printStackTrace(System.out);

}

}

}

      1. संकलन और शुरू करना अनुप्रयोग

फ़ाइलेंहेलोसर्वर. जावा और हेलोक्लाइंट. जावा, नमस्ते. आईडीएलऔर फ़ोल्डरहेलोऐप, बनाया थाidkj. प्रोग्राम फ़ाइलएक फ़ोल्डर में संग्रहित किया जाना चाहिए.

क्लाइंट और सर्वर को संकलित करने के लिए आपको इसकी आवश्यकता है कमांड लाइनडायल

javac *.java HelloApp/*.java

javac. प्रोग्राम फ़ाइलमें है …\jdk1.5.0\ बिन.

बुधवारग्रहणचलने नहीं देताकोरबाअनुप्रयोग। शुरुआत के लिए

1. सेवा प्रारंभ करेंओर्बडवस्तु अनुरोध दलाल डेमन (…\ jdk1.5.0\ बिन\ ओर्बड. प्रोग्राम फ़ाइल). ऐसा इसलिए किया जाता है ताकि हम नामकरण सेवा का संदर्भ प्राप्त कर सकें।

शुरू ओर्बडऑर्बिनिशियलपोर्ट 1050

पैरामीटर -ऑर्बिनिशियलपोर्ट- पोर्ट नंबर जिस पर नाम सर्वर संचालित होगा।

2. शुरू करना सर्वर

नाम सर्वर।

3. शुरू करना ग्राहक

उस पोर्ट को निर्दिष्ट करता है जिस पर नाम सर्वर चल रहा है। पैरामीटर - ORBInitialHost उस होस्ट को निर्दिष्ट करता है जिस पर वह चलता हैनाम सर्वर।

संकलन और लॉन्च में आसानी के लिए, आप बना सकते हैंबल्लाफ़ाइल:

आईडीएलजे - फॉल हेलो.आईडीएल

javac *.java HelloApp/*.java

जावा हैलोसर्वर प्रारंभ करें - ORBInitialPort 1050 - ORBInitialHost लोकलहोस्ट

जावा हैलोक्लाइंट - ऑर्बिनिशियलपोर्ट 1050 - ऑर्बिनिशियलहोस्ट लोकलहोस्ट


6.2 आईडीएल भाषा

भाषाहे भगवान आईडीएल (इंटरफेस परिभाषा भाषा- इंटरफ़ेस विवरण भाषा) ऑब्जेक्ट इंटरफ़ेस का वर्णन करने के लिए एक प्रौद्योगिकी-स्वतंत्र वाक्यविन्यास है। सॉफ़्टवेयर आर्किटेक्चर का वर्णन करते समय,हे भगवान आईडीएलकिसी वस्तु की सीमाओं को परिभाषित करने के लिए एक सार्वभौमिक संकेतन के रूप में उत्कृष्ट रूप से उपयोग किया जाता है जो सूचना प्रणाली के अन्य घटकों के संबंध में उसके व्यवहार को निर्धारित करता है।हे भगवान आईडीएलआपको उन इंटरफ़ेस का वर्णन करने की अनुमति देता है जिनके पास है विभिन्न तरीकेऔर गुण. भाषा इंटरफ़ेस इनहेरिटेंस का भी समर्थन करती है, जो कि आवश्यक है पुन: उपयोगअपने विस्तार या विशिष्टता की संभावना वाली वस्तुएँ।

आईडीएलयह विशुद्ध रूप से घोषणात्मक भाषा है, अर्थात इसमें कोई कार्यान्वयन नहीं है।आईडीएलविशिष्टताओं को हेडर फ़ाइलों और विशेष सर्वर प्रोटोटाइप में संकलित (मैप) किया जा सकता है जिनका उपयोग सीधे प्रोग्रामर द्वारा किया जा सकता है। वह हैआईडीएलकुछ विधियों को किसी भी भाषा में लिखा जा सकता है, और फिर निष्पादित किया जा सकता है, जिसके लिए मैपिंग मौजूद हैआईडीएल. ऐसी भाषाएँ शामिल हैंसी, सी++, गपशप, पास्कल, जावा, एडीए.

का उपयोग करकेआईडीएलआप इनपुट और आउटपुट पैरामीटर के विवरण के साथ घटक की विशेषताओं, और मूल वर्गों का वर्णन कर सकते हैं जो इसे विरासत में मिलते हैं, और जो अपवाद फेंके जाते हैं, और अंत में, इंटरफ़ेस को परिभाषित करने वाले तरीकों का वर्णन कर सकते हैं।

संरचनाकोरबा आईडीएलफ़ाइल इस तरह दिखती है:

मापांक(

;

;

;

इंटरफेस [: ] (

;

;

;

;

()

.

.

()

.

.

}

इंटरफेस [: ]

.

.

}

भाषा वाक्यविन्यासआईडीएलयह काफी विशाल है और किसी शिक्षण पुस्तिका में इसका वर्णन करना संभव नहीं है।

इंटरफ़ेस को लागू करने के लिए डाक सर्वरपूरक किया जा सकता हैनमस्ते. आईडीएल

मॉड्यूल HelloApp

{

संरचना TMessage

{

स्ट्रिंग टू;

स्ट्रिंग से;

स्ट्रिंग संदेश;

};

टाइपडिफ़ अनुक्रम TMessages;

इंटरफ़ेस नमस्ते

{

TMessages GetMessages (स्ट्रिंग नाम में, संक्षिप्त गिनती);

वनवे शून्य भेजें (स्ट्रिंग क्लाइंट में, स्ट्रिंग नाम में, स्ट्रिंग संदेश में);

स्ट्रिंग सेहैलो();

वनवे शून्य शटडाउन();

};

};

टाइपडिफ़ अनुक्रम TMessages; घोषणा प्रकार गतिशील सरणी संदेशोंटीमैसेज.

डेटा परिशिष्टों में प्रस्तुत सैद्धांतिक सामग्री से स्वयं को परिचित करें पद्धति संबंधी निर्देशऔर कार्यक्रम के उदाहरण. असाइनमेंट का पाठ पढ़ें प्रयोगशाला कार्य, प्रयोगशाला असाइनमेंट आवश्यकताओं को पूरा करने के लिए घटक प्लेसमेंट और कार्यक्षमता का प्रस्ताव करें, और प्रोग्राम लिखें।

2. प्रयोगशाला असाइनमेंट

एक ईमेल क्लाइंट और सर्वर विकसित करें। क्लाइंट एक विंडो एप्लिकेशन है जो आपको सर्वर से संदेश भेजने और प्राप्त करने की अनुमति देगा। सर्वर पर क्लाइंट की पहचान, संदेश स्थानांतरण प्रोटोकॉल छात्रों के विवेक पर है।

सर्वर एक कंसोल एप्लिकेशन हो सकता है। आप संदेशों को इसमें संग्रहीत कर सकते हैं पाठ फ़ाइल. सर्वर को बहु-थ्रेडेड बनाने की अनुशंसा की जाती है।

क्लाइंट और सर्वर के बीच इंटरैक्ट करने के लिए, CORBA तकनीक का उपयोग करें।

इसके अतिरिक्त, सर्वर या क्लाइंट को जावा में लागू करने का प्रस्ताव है।

3. रिपोर्ट की सामग्री

रिपोर्ट में शामिल होना चाहिए:

1. एक सुचारु रूप से कार्यशील कार्यक्रम द्वारा हल की गई समस्या का विवरण।

2. डिबग किए गए प्रोग्राम का उपयोगकर्ता मैनुअल, जिसमें सभी प्रोग्राम फ़ंक्शंस के इंटरफ़ेस का विवरण शामिल है।

3. आवश्यक टिप्पणियों के साथ कार्यक्रम की सूची बनाना।

4. प्रश्नों पर नियंत्रण रखें

1. कोरबा क्या है?

2. आईडीएल क्या है? यह किस लिए है?

3. CORBA में क्लाइंट और सर्वर कैसे इंटरैक्ट करते हैं?

4. उनके बीच डेटा कैसे स्थानांतरित किया जाता है?

5. नेम सर्वर किसके लिए है?

6. आप कोरबा सर्वर कैसे शुरू करते हैं?

5. साहित्य

1. केन अर्नोल्ड, जेम्स गोसलिंग, डेविड होम्स। जावा™ प्रोग्रामिंग भाषा।

2. आधिकारिक जावा वेबसाइट - http://java.sun.com/ (पाठ्यपुस्तक के साथ रूसी में एक अनुभाग है)।

3. Java™ 2 SDK, मानक संस्करण दस्तावेज़ीकरण - http://java.sun.com/products/jdk/1.5/index.html।

4. जेम्स गोसलिंग, बिल जॉय, गाइ स्टील। जावा भाषा विशिष्टता - http://www.javasoft.com/docs/books/jls/। रूसी में अनुवाद - http://www.uni-vologda.ac.ru/java/jls/index.html

5. एक्लिप्स प्रोजेक्ट की आधिकारिक वेबसाइट http://www.eclipse.org/ है।

6. परिशिष्ट 1। कोरबा

CORBA (कॉमन ऑब्जेक्ट रिक्वेस्ट ब्रोकर आर्किटेक्चर) तकनीक OMG (ओपन मैनेजमेंट ग्रुप) कंसोर्टियम द्वारा प्रस्तावित वितरित एप्लिकेशन लिखने के लिए एक मानक है। उदाहरण के लिए, CORBA ऑब्जेक्ट बनाकर, हम उन समस्याओं को हल करने के लिए आवश्यक समय को काफी कम कर सकते हैं जिनके लिए बड़ी मात्रा में गणना की आवश्यकता होती है। यह CORBA ऑब्जेक्ट को विभिन्न मशीनों पर रखकर संभव है। प्रत्येक दूरस्थ वस्तु एक विशिष्ट उपकार्य को हल करती है, जिससे ग्राहक को अनावश्यक कार्य से राहत मिलती है।

CORBA का मूल ऑब्जेक्ट रिक्वेस्ट ब्रोकर है। ओआरबी एक वितरित नेटवर्क वातावरण में वस्तुओं की परस्पर क्रिया का प्रबंधन करता है। IIOP (इंटरनेट इंटर-ओआरबी प्रोटोकॉल) ओआरबी के बीच बातचीत के लिए एक विशेष प्रोटोकॉल है।

स्टब नामक एक विशेष वस्तु ग्राहक के पता स्थान में संचालित होती है। क्लाइंट से अनुरोध प्राप्त करने के बाद, यह अनुरोध मापदंडों को एक विशेष प्रारूप में पैक करता है और इसे सर्वर, या बल्कि कंकाल तक पहुंचाता है।

स्केलेटन एक ऑब्जेक्ट है जो सर्वर एड्रेस स्पेस में संचालित होता है। क्लाइंट से अनुरोध प्राप्त करने के बाद, यह उसे अनपैक करता है और सर्वर पर भेजता है। स्केलेटन सर्वर की प्रतिक्रियाओं को भी परिवर्तित करता है और उन्हें क्लाइंट (स्टब) तक भेजता है।

जावा तकनीक का उपयोग करके किसी भी CORBA एप्लिकेशन को लिखने के लिए, आपके पास दो चीजें होनी चाहिए - JDK1.5 पैकेज स्थापित और idlj कंपाइलर (...\jdk1.5.0\bin\idlj.exe)। JDK CORBA ऑब्जेक्ट के साथ काम करने के लिए कक्षाओं का एक सेट प्रदान करता है, और idlj IDL भाषा को जावा में मैप करता है।

6.1 एक सरल कॉर्बा एप्लिकेशन बनाना

6.1.1 इंटरफ़ेस लिखना

जावा में एक CORBA एप्लिकेशन बनाना इंटरफ़ेस डेफिनिशन लैंग्वेज (IDL) का उपयोग करके किसी दूरस्थ ऑब्जेक्ट के लिए एक इंटरफ़ेस लिखने से शुरू होता है।

आइए hello.idl फ़ाइल बनाएं

मॉड्यूल हैलोऐप (इंटरफ़ेस हैलो (स्ट्रिंग सेहेलो(); वनवे वॉयड शटडाउन();););

यह इंटरफ़ेस केवल दो विधियों का वर्णन करता है, शटडाउन और हैलो कहें. इसके अलावा, हमारे लिए यह मायने नहीं रखता कि ये विधियां क्या करती हैं, मुख्य बात यह है कि हम यह निर्धारित करें कि वे मौजूद हैं और यह निर्धारित करें कि उनके पास कौन से इनपुट और आउटपुट पैरामीटर हैं।

आईडीएलजे - फॉल हेलो.आईडीएल

वर्तमान निर्देशिका में एक नया फ़ोल्डर प्रकट हुआ है नमस्ते अनुप्रयोग, जिसमें छह जावा फ़ाइलें हैं। उनमें से प्रत्येक का अपना उद्देश्य है।

· HelloPOA.java जावा एक अमूर्त वर्ग है जो एक सर्वर स्केलेटन (कंकाल) से अधिक कुछ नहीं है और सर्वर कार्यक्षमता प्रदान करता है।

· _HelloStub.java - एक क्लास जो क्लाइंट स्टब को लागू करता है। ग्राहक कार्यक्षमता प्रदान करता है.

· HelloHelper.java और HelloHolder.java ऐसी कक्षाएं हैं जो CORBA ऑब्जेक्ट के लिए सहायक कार्य प्रदान करती हैं।

· HelloOperations.java - एक क्लास जिसमें जावा में हैलो इंटरफ़ेस का वर्णन है।

· Hello.java - एक वर्ग जो HelloOperations का उत्तराधिकारी है, जो org.omg.CORBA इंटरफ़ेस का समर्थन करता है। वस्तु।

6.1.2 एक सर्वर बनाना

अब हमारा काम एक क्लास लिखना है जो इंटरफ़ेस को लागू करता है नमस्ते. हमारे मामले में यह होगा नमस्तेImpl. कृपया ध्यान दें कि यह वर्ग का उत्तराधिकारी है हेलोPOA. में नमस्तेImplमें घोषित तरीके नमस्ते . आईडीएल .

कार्य को सरल बनाने के लिए विधियों की घोषणा फ़ाइल से ली जा सकती है हेलोऑपरेशंस . जावा , उत्पन्न jdlj .

क्लास HelloImpl HelloPOA (निजी ORB ओर्ब; सार्वजनिक शून्य सेटORB (ORB Orb_val) (orb = orb_val;) का विस्तार करता है। () विधिसार्वजनिक शून्य शटडाउन() (orb.shutdown(झूठा);))

अगला चरण एप्लिकेशन का वास्तविक सर्वर पक्ष बनाना है। यह हेलोसर्वर क्लास होगी।

इसकी केवल एक ही विधि होगी - मानक मुख्य कार्य।

पहली चीज़ जो हम करते हैं वह एक ORB बनाना है। फिर हम रिमोट ऑब्जेक्ट क्लास (HelloImpl) का एक उदाहरण बनाते हैं और इसे ORB में पंजीकृत करते हैं। इसके बाद, हम एक विशेष नाम सेवा (NameService) को कॉल करते हैं और उसमें दूरस्थ ऑब्जेक्ट का नाम पंजीकृत करते हैं ताकि ग्राहक उसे ढूंढ सके।

आइए इन चरणों पर करीब से नज़र डालें।

1. ओआरबी का निर्माण और आरंभीकरण। स्थैतिक विधि को कॉल करके निर्मित किया गया इस मेंओआरबी वर्ग

2. रिमोट ऑब्जेक्ट क्लास का एक उदाहरण बनाना और उसे ओआरबी में पंजीकृत करना

helloImpl.setORB(orb);

3. नामकरण संदर्भ प्राप्त करना (NamingContext)

org.omg.CORBA. ऑब्जेक्ट objRef = orb.resolve_initial_references("NameService");

पहली पंक्ति में हमें नाम सेवा (NameService) का एक ऑब्जेक्ट संदर्भ मिलता है। लेकिन वास्तव में यह एक सामान्य CORBA ऑब्जेक्ट है और इसे नामकरण संदर्भ (NamingContext) के रूप में उपयोग करने के लिए, आपको विधि को कॉल करने की आवश्यकता है सँकराकक्षा नामकरणकॉन्टेक्स्टहेल्पर, जो इस CORBA ऑब्जेक्ट को निर्दिष्ट करता प्रतीत होता है।

4. दूरस्थ वस्तु का नाम पंजीकृत करना (HelloImpl)

स्ट्रिंग नाम = "हैलो";

ncRef.rebind(पथ, href);

नाम पंजीकृत किया गया है ताकि ग्राहक दूरस्थ वस्तु ढूंढ सके। NamingContext इंटरफ़ेस का रिबाइंड (NameComponent nc, ऑब्जेक्ट obj) फ़ंक्शन इस उद्देश्य को पूरा करता है।

5. ग्राहक से अनुरोध की प्रतीक्षा करना

सर्वर अब उपयोग के लिए तैयार है.

// HelloServer.javaimport HelloApp.*;import org.omg. CosNaming.*;import org.omg. सहनामकरण. NamingContextPackage.*;आयात org.omg.CORBA.*;आयात org.omg. पोर्टेबलसर्वर.*;आयात org.omg. पोर्टेबल सर्वर.POA; आयात java.util. Properties;class HelloImpl HelloPOA (निजी ORB ओर्ब;सार्वजनिक शून्य सेटORB (ORB Orb_val) (orb = orb_val;) का विस्तार करता है। शटडाउन() विधि लागू करें सार्वजनिक शून्य शटडाउन() (orb.shutdown(false);))

पब्लिक क्लास हेलोसर्वर(

सार्वजनिक स्थैतिक शून्य main (String [] args) (

//ओआरबी बनाएं और प्रारंभ करें

ORB ओर्ब = ORB.init(args, null);

// रूटपोआ का संदर्भ प्राप्त करें और POAManager को सक्रिय करें

POA रूटपोआ = POAHelper.narow(orb.resolve_initial_references("RootPOA"));

Rootpoa.the_POAManager().activate();

// नौकर बनाएं और इसे ओआरबी के साथ पंजीकृत करें

HelloImpl helloImpl = नया HelloImpl();

helloImpl.setORB(orb);

// नौकर से वस्तु संदर्भ प्राप्त करें

org.omg.CORBA. ऑब्जेक्ट रेफरी = rootpoa.servant_to_reference(helloImpl);

नमस्ते href = HelloHelper.narow(ref);

// मूल नामकरण संदर्भ प्राप्त करें

// NameService नाम सेवा का आह्वान करता है

org.omg.CORBA. ऑब्जेक्ट objRef =

orb.resolve_initial_references("NameService");

// NamingContextExt का उपयोग करें जो इंटरऑपरेबल का हिस्सा है

// नामकरण सेवा (आईएनएस) विशिष्टता।

NamingContextExt ncRef = NamingContextExtHelper.narow(objRef);

// नामकरण में ऑब्जेक्ट रेफरेंस को बाइंड करें

स्ट्रिंग नाम = "हैलो";

NameComponent पथ = ncRef.to_name(नाम);

ncRef.rebind(पथ, href);

System.out.println('हैलोसर्वर तैयार है और प्रतीक्षा कर रहा है...');

// ग्राहकों से आमंत्रण की प्रतीक्षा करें

पकड़ो (अपवाद ई) (

System.err.println('ERROR:' + e);

e.printStackTrace(System.out);

System.out.println('हैलोसर्वर बाहर निकल रहा है...');

6.1.3 ग्राहक बनाना

चलिए क्लाइंट के लिए कोड लिखने की ओर बढ़ते हैं।

क्लाइंट एप्लिकेशन लिखने के लिए बुनियादी चरण

1. ओआरबी निर्माण और आरंभीकरण

2. नामकरण सेवा संदर्भ प्राप्त करना (NamingContext)

3. किसी दूरस्थ वस्तु को ढूँढना

4. सेहेलो विधि को कॉल करना।

5. शटडाउन विधि को कॉल करना।

जैसा कि आप देख सकते हैं, पहले दो बिंदु सर्वर एप्लिकेशन बनाने के चरणों से मेल खाते हैं, इसलिए हम उन पर विचार नहीं करेंगे।

तीसरा बिंदु भी लागू करने में काफी सरल है। एक NameComponent ऑब्जेक्ट बनाया गया है। रिज़ॉल्यूशन (NameComponent पथ) विधि को कहा जाता है, जो दूरस्थ ऑब्जेक्ट (मानक CORBA ऑब्जेक्ट) को नाम से ढूंढता है। हेलोहेल्पर वर्ग (आईडीएलजे कंपाइलर द्वारा उत्पन्न) की संकीर्ण विधि (org.omg.CORBA. ऑब्जेक्ट ओबीजे) का उपयोग करके, हम हैलो इंटरफ़ेस के लिए एक ऑब्जेक्ट संदर्भ प्राप्त करते हैं।

स्ट्रिंग नाम = "हैलो";

helloImpl = HelloHelper.narow(ncRef.resolve_str(name));

संपादकों की पसंद
पोरियाडिना ओल्गा वेनियामिनोव्ना, शिक्षक-भाषण चिकित्सक संरचनात्मक इकाई (भाषण केंद्र) का स्थान: रूसी संघ, 184209,...

विषय: ध्वनि एम - एम। अक्षर एम कार्यक्रम कार्य: * अक्षरों, शब्दों और वाक्यों में एम और एम ध्वनियों के सही उच्चारण के कौशल को मजबूत करें...

अभ्यास 1 । ए) शब्दों से प्रारंभिक ध्वनियों का चयन करें: स्लीघ, टोपी। ख) उच्चारण द्वारा एस और श ध्वनियों की तुलना करें। ये ध्वनियाँ किस प्रकार समान हैं? क्या अंतर है...

जैसा कि कोई उम्मीद कर सकता है, अधिकांश उदारवादियों का मानना ​​है कि वेश्यावृत्ति में खरीद और बिक्री का विषय सेक्स ही है। इसीलिए...
प्रस्तुतिकरण को चित्रों, डिज़ाइन और स्लाइड के साथ देखने के लिए, फ़ाइल डाउनलोड करें और इसे अपने पावरपॉइंट में खोलें...
त्सेलोवालनिक त्सेलोवालनिक मस्कोवाइट रूस के अधिकारी हैं, जो ज़ेम्शचिना द्वारा जिलों और कस्बों में न्यायिक कार्य करने के लिए चुने जाते हैं...
किसर सबसे अजीब और सबसे रहस्यमय पेशा है जो रूस में कभी अस्तित्व में रहा है। ये नाम किसी को भी बना सकता है...
हिरोशी इशिगुरो एंड्रॉइड रोबोट के निर्माता, "वन हंड्रेड जीनियस ऑफ आवर टाइम" की सूची में से अट्ठाईसवें जीनियस हैं, जिनमें से एक उनका सटीक है...
石黒浩 कैरियर 1991 में उन्होंने अपने शोध प्रबंध का बचाव किया। 2003 से ओसाका विश्वविद्यालय में प्रोफेसर। एक प्रयोगशाला का प्रमुख होता है जिसमें...
नया