OpenJDK 8 - RemoteObjectInvocationHandler

वर्ग RemoteObjectInvocationHandler




openjdk

वर्ग RemoteObjectInvocationHandler

सभी लागू इंटरफेस:
Serializable , InvocationHandler , Remote
public class RemoteObjectInvocationHandler
extends RemoteObject
implements InvocationHandler

जावा रिमोट मेथड इनवोकेशन (जावा RMI) के साथ उपयोग के लिए InvocationHandler इंटरफ़ेस का कार्यान्वयन। इस मंगलाचरण हैंडलर का उपयोग एक गतिशील प्रॉक्सी उदाहरण के साथ संयोजन के रूप में किया जा सकता है जो पहले से तैयार स्टब वर्ग के प्रतिस्थापन के रूप में होता है।

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

जबसे:
1.5

खेत

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

ref

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

RemoteObjectInvocationHandler

public RemoteObjectInvocationHandler(RemoteRef ref)

निर्दिष्ट RemoteRef साथ निर्मित एक नया RemoteObjectInvocationHandler बनाता है।

पैरामीटर:
ref - रिमोट रेफ
फेंकता:
NullPointerException - अगर ref null

तरीके

आह्वान

public Object invoke(Object proxy,
                     Method method,
                     Object[] args)
              throws Throwable

इनकैप्सुलेटिंग प्रॉक्सी उदाहरण, proxy , और परिणाम देता है पर बना एक विधि मंगलाचरण संसाधित करता है।

RemoteObjectInvocationHandler इस विधि को इस प्रकार लागू करता है:

यदि method निम्न विधियों में से एक है, तो इसे नीचे वर्णित के अनुसार संसाधित किया जाता है:

  • java.lang.Object : प्रॉक्सी के लिए हैश कोड मान लौटाता है।
  • java.lang.Object : यदि रिटर्न तर्क ( args[0] ) एक गतिशील प्रॉक्सी वर्ग का उदाहरण है और यह मंगलाचरण हैंडलर उस तर्क के मंगलाचरण हैंडलर के बराबर है, और अन्यथा false रिटर्न देता है।
  • java.lang.Object : प्रॉक्सी का एक स्ट्रिंग प्रतिनिधित्व लौटाता है।

अन्यथा, एक दूरस्थ कॉल इस प्रकार किया जाता है:

  • यदि proxy इंटरफ़ेस Remote का एक उदाहरण नहीं है, तो एक IllegalArgumentException को फेंक दिया जाता है।
  • अन्यथा, इस मंगलाचरण हैंडलर के RemoteRef पर invoke विधि को लागू किया जाता है, proxy , method , args , और विधि हैश (विधि के लिए "जावा रिमोट विधि मंगलाचरण (RMI) विनिर्देशन") की धारा 8.3 में परिभाषित किया गया है, और परिणाम वापस आ गया है ।
  • यदि एक अपवाद RemoteRef.invoke द्वारा फेंका गया है और वह अपवाद एक ऐसा अपवाद है जो proxy के वर्ग द्वारा लागू विधि के throws क्लॉज में किसी भी अपवाद के लिए उपयुक्त नहीं है, तो वह अपवाद एक UnexpectedException अपवाद और लिपटे अपवाद में लिपटे हुए है। फेंक दिया जाता है। अन्यथा, invoke द्वारा फेंके गए अपवाद को इस विधि द्वारा फेंक दिया जाता है।

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

इसके द्वारा निर्दिष्ट:
इंटरफ़ेस में InvocationHandler InvocationHandler
पैरामीटर:
proxy - छद्म उदाहरण जिस पर विधि लागू की गई थी
method - इंटरफ़ेस विधि के अनुरूप Method उदाहरण प्रॉक्सी उदाहरण पर आह्वान किया
args - ऑब्जेक्ट्स के एक सरणी जिसमें विधि इंस्टोलेशन में विधि इनवोकेशन में पारित तर्कों के मान हैं, या यदि विधि कोई तर्क नहीं लेती है, तो null
यह दिखाता है:
छद्म उदाहरण पर विधि मंगलाचरण से लौटने का मान
फेंकता:
Throwable - छद्म उदाहरण पर विधि आह्वान से फेंकने के लिए अपवाद
यह भी देखें:
UndeclaredThrowableException