जावा दूरस्थ पद्धति उत्क्रियण (जावा रिमोट मेथड एक्टिवेशन)

From Vigyanwiki
Revision as of 13:33, 15 May 2023 by alpha>Indicwiki (Created page with "thumb|right|400px|[[ वर्ग ठूंठ और डिस्ट्रिब्यूटेड ऑब्जेक्ट कम्यु...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
वर्ग ठूंठ और डिस्ट्रिब्यूटेड ऑब्जेक्ट कम्युनिकेशन#स्केलेटन ऑब्जेक्ट्स का उपयोग करते हुए जावा-आरएमआई का एक विशिष्ट कार्यान्वयन मॉडल। Java 2 SDK, Standard Edition, v1.2 ने कंकाल की आवश्यकता को हटा दिया।

कम्प्यूटिंग में, जावा दूरस्थ विधि मंगलाचरण (जावा आरएमआई) एक जावा (प्रोग्रामिंग भाषा) अप्लिकेशन प्रोग्रामिंग अंतरफलक है जो रिमोट मेथड इनवोकेशन करता है, जो सुदूर प्रणाली संदेश ्स (RPC) के ऑब्जेक्ट-ओरिएंटेड समतुल्य है, सीरियलाइजेशन #Java के डायरेक्ट ट्रांसफर के लिए सपोर्ट के साथ जावा कक्षाएं और वितरित कचरा संग्रह | वितरित कचरा-संग्रह।

मूल कार्यान्वयन जावा वर्चुअल मशीन (जेवीएम) वर्ग-प्रतिनिधित्व तंत्र पर निर्भर करता है और इस प्रकार यह केवल एक जेवीएम से दूसरे में कॉल करने का समर्थन करता है। इस जावा-केवल कार्यान्वयन के अंतर्निहित प्रोटोकॉल को जावा रिमोट मेथड प्रोटोकॉल (JRMP) के रूप में जाना जाता है। गैर-जेवीएम संदर्भ में चलने वाले कोड का समर्थन करने के लिए, प्रोग्रामर ने बाद में एक कॉमन ऑब्जेक्ट रिक्वेस्ट ब्रोकर आर्किटेक्चर संस्करण विकसित किया।

RMI शब्द का उपयोग केवल प्रोग्रामिंग इंटरफ़ेस को निरूपित कर सकता है या API और JRMP, IIOP, या अन्य कार्यान्वयन दोनों को इंगित कर सकता है, जबकि RMI-IIOP शब्द (पढ़ें: IIOP पर RMI) विशेष रूप से RMI इंटरफ़ेस को दर्शाता है जो अधिकांश कार्यक्षमता को दर्शाता है। सहायक कोरबा कार्यान्वयन।

जावा आरएमआई का मूल विचार, वितरित कचरा-संग्रह (डीजीसी) प्रोटोकॉल, और मूल सूर्य कार्यान्वयन के अंतर्निहित अधिकांश आर्किटेक्चर, मोडुला -3 की नेटवर्क ऑब्जेक्ट सुविधा से आते हैं।

सामान्यीकृत कोड

मूल आरएमआई एपीआई के प्रोग्रामर ने हाइपरटेक्स्ट परहस्त शिष्टाचार ट्रांसपोर्ट जैसे विभिन्न कार्यान्वयनों का समर्थन करने के लिए कुछ हद तक कोड को सामान्यीकृत किया। इसके अतिरिक्त, RMI इंटरफ़ेस के साथ संगत होने के लिए CORBA में तर्कों को मूल्य से कॉल करें पास करने की क्षमता जोड़ी गई थी। फिर भी, RMI-IIOP और JRMP कार्यान्वयनों में पूरी तरह से समान इंटरफेस नहीं हैं।

RMI कार्यक्षमता पैकेज में आती है java.rmi, जबकि सूर्य का अधिकांश कार्यान्वयन में स्थित है sun.rmi पैकेट। ध्यान दें कि जावा 5.0 से पहले जावा संस्करणों के साथ डेवलपर्स को आरएमआई स्टब्स को एक अलग संकलन चरण में संकलित करना था rmic. Java के संस्करण 5.0 और उसके बाद के संस्करण को अब इस चरण की आवश्यकता नहीं है।

जिनि संस्करण

खून जावा में आरएमआई का अधिक उन्नत संस्करण प्रदान करता है। यह समान रूप से कार्य करता है लेकिन वितरित वस्तु अनुप्रयोगों के लिए अधिक उन्नत सुरक्षा, वस्तु खोज क्षमताएं और अन्य तंत्र प्रदान करता है।[1]


उदाहरण

निम्न वर्ग आरएमआई का उपयोग कर एक साधारण क्लाइंट-सर्वर प्रोग्राम को लागू करते हैं जो एक संदेश प्रदर्शित करता है।RmiServerIntf इंटरफ़ेस - उस इंटरफ़ेस को परिभाषित करता है जो क्लाइंट द्वारा उपयोग किया जाता है और सर्वर द्वारा कार्यान्वित किया जाता है।

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface RmiServerIntf extends Remote {
    String getMessage() throws RemoteException;
}

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

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.registry.*;

public class RmiServer extends UnicastRemoteObject implements RmiServerIntf {
    public static final String MESSAGE = "Hello World";

    public RmiServer() throws RemoteException {
        super(0); // required to avoid the 'rmic' step, see below
    }

    public String getMessage() {
        return MESSAGE;
    }

    public static void main(String args[]) throws Exception {
        System.out.println("RMI server started");

        try { //special exception handler for registry creation
            LocateRegistry.createRegistry(1099);
            System.out.println("java RMI registry created.");
        } catch (RemoteException e) {
            //do nothing, error means registry already exists
            System.out.println("java RMI registry already exists.");
        }
           
        //Instantiate RmiServer
        RmiServer server = new RmiServer();

        // Bind this object instance to the name "RmiServer"
        Naming.rebind("//localhost/RmiServer", server);
        System.out.println("PeerServer bound in registry");
    }
}

RmiClient वर्ग - यह क्लाइंट है जो सर्वर पर रहने वाली दूरस्थ वस्तु के लिए संदर्भ (एक प्रॉक्सी) प्राप्त करता है और संदेश प्राप्त करने के लिए इसकी विधि को आमंत्रित करता है। यदि सर्वर ऑब्जेक्ट java.rmi.Remote के बजाय java.io.Serializable लागू करता है, तो इसे क्रमबद्ध किया जाएगा और क्लाइंट को मान के रूप में पास किया जाएगा।[2]

import java.rmi.Naming;

public class RmiClient {
    public static void main(String args[]) throws Exception {
        RmiServerIntf server = (RmiServerIntf)Naming.lookup("//localhost/RmiServer");
        System.out.println(server.getMessage());
    }
}

इस उदाहरण को चलाने से पहले, हमें उस इंटरफ़ेस के लिए एक 'स्टब' फ़ाइल बनानी होगी जिसका हमने उपयोग किया था। इस कार्य के लिए हमारे पास RMI कम्पाइलर है - 'rmic'

  • ध्यान दें: हम रिमोट इंटरफ़ेस के कार्यान्वयन के साथ '*.class' फ़ाइल से एक स्टब फ़ाइल बनाते हैं, '*.java' फ़ाइल से नहीं।
rmic RmiServer

ध्यान दें कि गतिशील रूप से उत्पन्न स्टब फ़ाइलों के लिए J2SE समर्थन के संस्करण 5.0 को जोड़ा गया है, और rmic केवल पिछले रनटाइम के साथ पश्चगामी संगतता के लिए प्रदान किया गया है,[3] या उन प्रोग्रामों के लिए जो दूरस्थ वस्तुओं को निर्यात करते समय एक स्पष्ट पोर्ट नंबर (या शून्य) प्रदान नहीं करते हैं, जो संभव होने के लिए उत्पन्न स्टब्स के लिए आवश्यक है, जैसा कि Javadoc for UnicastRemoteObject में वर्णित है। उपरोक्त कन्स्ट्रक्टर में टिप्पणी देखें।

संदर्भ

  1. Taylor, Ian J (2005). From P2P to Web Services and Grids : Peers in a Client/Server World. Computer Communications and Networks. London: Springer-Verlag. doi:10.1007/b138333. ISBN 1852338695. OCLC 827073874.[page needed]
  2. Wilson, M. Jeff (November 10, 2000). "प्रॉक्सी और आरएमआई के साथ स्मार्ट बनें". JavaWorld. Retrieved 2020-07-18.
  3. "जावा आरएमआई रिलीज नोट्स". Oracle. Retrieved 9 May 2012.


बाहरी संबंध