OpenJDK 8 - UnicastRemoteObject

क्लास यूनिकैस्टरेमोटऑबजेक्ट




openjdk

क्लास यूनिकैस्टरेमोटऑबजेक्ट

सभी लागू इंटरफेस:
Serializable , Remote
प्रत्यक्ष ज्ञात उपवर्ग:
ActivationGroup
public class UnicastRemoteObject
extends RemoteServer

जेआरएमपी के साथ एक दूरस्थ वस्तु निर्यात करने और एक स्टब प्राप्त करने के लिए उपयोग किया जाता है जो दूरस्थ वस्तु से संचार करता है। स्टब्स या तो गतिशील प्रॉक्सी ऑब्जेक्ट्स का उपयोग करके रनटाइम पर उत्पन्न होते हैं, या वे बिल्ड टाइम पर स्टेटिक रूप से उत्पन्न होते हैं, आमतौर पर rmic टूल का उपयोग करते हैं।

पदावनत: स्थैतिक स्टब्स। स्टैटिकली जेनरेट किए गए स्टब्स के लिए सपोर्ट को हटा दिया जाता है। इस वर्ग में एपीआई शामिल है जिसमें स्थैतिक स्टब्स के उपयोग की आवश्यकता होती है, साथ ही स्थैतिक स्टब्स को लोड करने के लिए रनटाइम समर्थन भी शामिल है। स्टैंब को गतिशील रूप से बनाना पसंद किया जाता है, नीचे सूचीबद्ध वस्तुओं को निर्यात करने के पांच गैर-डिप्रेस्ड तरीकों में से एक का उपयोग करके। स्टैटिक स्टब क्लासेस जेनरेट करने के लिए rmic न करें। यह अनावश्यक है, और यह भी पदावनत है।

दूरस्थ वस्तुओं को निर्यात करने के छह तरीके हैं:

  1. UnicastRemoteObject और UnicastRemoteObject() कंस्ट्रक्टर को कॉल करना।
  2. UnicastRemoteObject को UnicastRemoteObject(port) रहा है और UnicastRemoteObject(port) कंस्ट्रक्टर को कॉल कर रहा है।
  3. UnicastRemoteObject और UnicastRemoteObject(port, csf, ssf) कंस्ट्रक्टर को UnicastRemoteObject(port, csf, ssf)
  4. exportObject(Remote) विधि को कॉल करना। पदावनत।
  5. exportObject(Remote, port) विधि को कॉल करना।
  6. exportObject(Remote, port, csf, ssf) विधि को exportObject(Remote, port, csf, ssf)

चौथी तकनीक, exportObject(Remote) , हमेशा स्टैटिकली जेनरेट किए गए स्टब्स का उपयोग करता है और इसे हटा दिया जाता है।

अन्य पांच तकनीकें सभी निम्नलिखित दृष्टिकोण का उपयोग करती हैं: यदि java.rmi.server.ignoreStubClasses संपत्ति true (केस असंवेदनशील) या यदि कोई स्थिर स्टब नहीं पाया जा सकता है, तो स्टिक्स गतिशील रूप से Proxy ऑब्जेक्ट्स का उपयोग करके उत्पन्न होते हैं। अन्यथा, स्थैतिक स्टब्स का उपयोग किया जाता है।

java.rmi.server.ignoreStubClasses संपत्ति का डिफ़ॉल्ट मान false

आमतौर पर उत्पन्न होने वाले स्टब्स को आम तौर पर rmic टूल का उपयोग करके दूरस्थ ऑब्जेक्ट की कक्षा से पहले से rmic है। एक स्थिर स्टब लोड किया जाता है और उस स्टब क्लास का एक उदाहरण नीचे वर्णित के रूप में बनाया गया है।

  • एक "रूट क्लास" निम्नानुसार निर्धारित किया जाता है: यदि दूरस्थ ऑब्जेक्ट की क्लास सीधे एक इंटरफ़ेस को लागू करती है जो Remote विस्तार करती है, तो रिमोट ऑब्जेक्ट की क्लास रूट क्लास है; अन्यथा, रूट क्लास रिमोट ऑब्जेक्ट के वर्ग का सबसे अधिक व्युत्पन्न सुपरक्लास है जो सीधे एक इंटरफ़ेस को लागू करता है जो Remote विस्तार करता है।
  • स्टब क्लास को लोड करने के नाम को प्रत्यय _Stub साथ रूट क्लास के बाइनरी नाम को _Stub करके निर्धारित किया जाता है।
  • रूट क्लास के क्लास लोडर का उपयोग करके स्टब क्लास को नाम से लोड किया जाता है। स्टब क्लास को RemoteStub विस्तार करना चाहिए और एक सार्वजनिक कंस्ट्रक्टर होना चाहिए, जिसमें एक प्रकार का RemoteStub
  • अंत में, स्टब क्लास का एक उदाहरण RemoteRef साथ बनाया गया है।
  • यदि उपयुक्त स्टब वर्ग नहीं मिल सका, या यदि स्टब वर्ग लोड नहीं किया जा सका, या स्टब आवृत्ति बनाने में कोई समस्या उत्पन्न होती है, तो StubNotFoundException को फेंक दिया जाता है।

निम्नांकित विशेषताओं के साथ Proxy का उदाहरण बनाकर स्टब्स को गतिशील रूप से उत्पन्न किया जाता है:

  • प्रॉक्सी का वर्ग दूरस्थ ऑब्जेक्ट के क्लास लोडर द्वारा परिभाषित किया गया है।
  • प्रॉक्सी दूरस्थ वस्तु के वर्ग द्वारा लागू सभी दूरस्थ इंटरफेस को लागू करती है।
  • प्रॉक्सी का मंगलाचरण हैंडलर RemoteRef साथ निर्मित एक RemoteObjectInvocationHandler उदाहरण है।
  • यदि प्रॉक्सी नहीं बनाई जा सकी, तो StubNotFoundException को फेंक दिया जाएगा।
कार्यान्वयन नोट:
किसी ऑब्जेक्ट को निर्यात करने के लिए कंस्ट्रक्टर या स्टैटिक विधि का उपयोग किया जाता है, इस पर निर्भर करते हुए, RMISocketFactory का उपयोग सॉकेट बनाने के लिए किया जा सकता है। डिफ़ॉल्ट रूप से, RMISocketFactory द्वारा बनाए गए सर्वर सॉकेट सभी नेटवर्क इंटरफेस पर सुनते हैं। RMISocketFactory वर्ग और जावा RMI विनिर्देशन में RMI सॉकेट फैक्ट्रीज़ को देखें।
जबसे:
JDK1.1

खेत

कक्षा java.rmi.server से विरासत में मिली फ़ील्ड। java.rmi.server.RemoteObject

ref

कंस्ट्रक्टर्स

UnicastRemoteObject

protected UnicastRemoteObject()
                       throws RemoteException

एक अनाम पोर्ट का उपयोग करके एक नया UnicastRemoteObject ऑब्जेक्ट बनाता और निर्यात करता है।

ऑब्जेक्ट RMISocketFactory वर्ग का उपयोग करके बनाए गए सर्वर सॉकेट के साथ निर्यात किया जाता है।

फेंकता:
RemoteException - यदि ऑब्जेक्ट निर्यात करने में विफल रहा
जबसे:
JDK1.1

UnicastRemoteObject

protected UnicastRemoteObject(int port)
                       throws RemoteException

विशेष रूप से आपूर्ति किए गए पोर्ट का उपयोग करके एक नया UnicastRemoteObject ऑब्जेक्ट बनाता और निर्यात करता है।

ऑब्जेक्ट RMISocketFactory वर्ग का उपयोग करके बनाए गए सर्वर सॉकेट के साथ निर्यात किया जाता है।

पैरामीटर:
port - वह पोर्ट संख्या जिस पर दूरस्थ ऑब्जेक्ट कॉल प्राप्त करता है (यदि port शून्य है, तो एक अनाम पोर्ट चुना जाता है)
फेंकता:
RemoteException - यदि ऑब्जेक्ट निर्यात करने में विफल रहा
जबसे:
1.2

UnicastRemoteObject

protected UnicastRemoteObject(int port,
                              RMIClientSocketFactory csf,
                              RMIServerSocketFactory ssf)
                       throws RemoteException

विशेष रूप से आपूर्ति किए गए पोर्ट और सॉकेट कारखानों का उपयोग करके एक नया UnicastRemoteObject ऑब्जेक्ट बनाता और निर्यात करता है।

या तो सॉकेट फैक्ट्री null हो सकती है, जिस स्थिति में RMISocketFactory के संबंधित क्लाइंट या सर्वर सॉकेट निर्माण विधि का उपयोग किया जाता है।

पैरामीटर:
port - वह पोर्ट संख्या जिस पर दूरस्थ ऑब्जेक्ट कॉल प्राप्त करता है (यदि port शून्य है, तो एक अनाम पोर्ट चुना जाता है)
csf - दूरस्थ वस्तु पर कॉल करने के लिए क्लाइंट-साइड सॉकेट फैक्टरी
ssf - रिमोट कॉल प्राप्त करने के लिए सर्वर-साइड सॉकेट फैक्टरी
फेंकता:
RemoteException - यदि ऑब्जेक्ट निर्यात करने में विफल रहा
जबसे:
1.2

तरीके

क्लोन

public Object clone()
             throws CloneNotSupportedException

दूरस्थ वस्तु का एक क्लोन लौटाता है जो मूल से अलग है।

ओवरराइड:
क्लास java.lang.Object में java.lang.Object
यह दिखाता है:
नई दूरस्थ वस्तु
फेंकता:
CloneNotSupportedException - यदि क्लोन CloneNotSupportedException कारण विफल हुआ है।
जबसे:
JDK1.1
यह भी देखें:
Cloneable

exportObject

@Deprecated
public static RemoteStub exportObject(Remote obj)
                                           throws RemoteException

पदावनत। यह विधि पदावनत है क्योंकि यह केवल स्थैतिक स्टब्स का समर्थन करती है। इसके बजाय exportObject(Remote, port) या exportObject(Remote, port, csf, ssf) उपयोग करें।

अनाम पोर्ट का उपयोग करके इनकमिंग कॉल प्राप्त करने के लिए इसे उपलब्ध कराने के लिए दूरस्थ ऑब्जेक्ट को निर्यात करता है। यह विधि हमेशा एक सांख्यिकीय रूप से उत्पन्न स्टब को लौटाएगी।

ऑब्जेक्ट RMISocketFactory वर्ग का उपयोग करके बनाए गए सर्वर सॉकेट के साथ निर्यात किया जाता है।

पैरामीटर:
obj - निर्यात की जाने वाली दूरस्थ वस्तु
यह दिखाता है:
दूरस्थ वस्तु ठूंठ
फेंकता:
RemoteException - यदि निर्यात विफल रहता है
जबसे:
JDK1.1

exportObject

public static Remote exportObject(Remote obj,
                                  int port)
                           throws RemoteException

किसी विशेष आपूर्ति पोर्ट का उपयोग करके आने वाली कॉल प्राप्त करने के लिए दूरस्थ वस्तु को निर्यात करता है।

ऑब्जेक्ट RMISocketFactory वर्ग का उपयोग करके बनाए गए सर्वर सॉकेट के साथ निर्यात किया जाता है।

पैरामीटर:
obj - निर्यात की जाने वाली दूरस्थ वस्तु
port - जिस पोर्ट पर ऑब्जेक्ट को एक्सपोर्ट करना है
यह दिखाता है:
दूरस्थ वस्तु ठूंठ
फेंकता:
RemoteException - यदि निर्यात विफल रहता है
जबसे:
1.2

exportObject

public static Remote exportObject(Remote obj,
                                  int port,
                                  RMIClientSocketFactory csf,
                                  RMIServerSocketFactory ssf)
                           throws RemoteException

दी गई सॉकेट फैक्ट्री द्वारा निर्दिष्ट ट्रांसपोर्ट का उपयोग करके, इनकमिंग कॉल प्राप्त करने के लिए इसे उपलब्ध कराने के लिए रिमोट ऑब्जेक्ट को एक्सपोर्ट करता है।

या तो सॉकेट फैक्ट्री null हो सकती है, जिस स्थिति में RMISocketFactory के संबंधित क्लाइंट या सर्वर सॉकेट निर्माण विधि का उपयोग किया जाता है।

पैरामीटर:
obj - निर्यात की जाने वाली दूरस्थ वस्तु
port - जिस पोर्ट पर ऑब्जेक्ट को एक्सपोर्ट करना है
csf - दूरस्थ वस्तु पर कॉल करने के लिए क्लाइंट-साइड सॉकेट फैक्टरी
ssf - रिमोट कॉल प्राप्त करने के लिए सर्वर-साइड सॉकेट फैक्टरी
यह दिखाता है:
दूरस्थ वस्तु ठूंठ
फेंकता:
RemoteException - यदि निर्यात विफल रहता है
जबसे:
1.2

unexportObject

public static boolean unexportObject(Remote obj,
                                     boolean force)
                              throws NoSuchObjectException

RMI रनटाइम से दूरस्थ ऑब्जेक्ट, obj को निकालता है। सफल होने पर, ऑब्जेक्ट अब आने वाली RMI कॉल्स को स्वीकार नहीं कर सकता है। यदि बल पैरामीटर सही है, तो ऑब्जेक्ट को जबरन अनएक्सपोर्ट किया जाता है, भले ही दूरस्थ ऑब्जेक्ट के लिए लंबित कॉल हों या रिमोट ऑब्जेक्ट में अभी भी प्रगति हो। यदि बल पैरामीटर गलत है, तो ऑब्जेक्ट केवल अस्पष्टीकृत है यदि ऑब्जेक्ट के लिए लंबित या प्रगति कॉल नहीं हैं।

पैरामीटर:
obj - दूरस्थ वस्तु अस्पष्टीकृत होना
force - यदि सत्य है, तो वस्तु को तब भी अप्राप्त करता है, जब तक कि लंबित या प्रगति कॉल हो; यदि गलत है, तो केवल ऑब्जेक्ट को तब ही अनएक्सपर्ट करता है जब कोई पेंडिंग या इन-प्रोग्रेस कॉल न हो
यह दिखाता है:
सच है अगर ऑपरेशन सफल है, अन्यथा झूठ है
फेंकता:
NoSuchObjectException - यदि दूरस्थ ऑब्जेक्ट वर्तमान में निर्यात नहीं किया गया है
जबसे:
1.2