OpenJDK 8 - RMISocketFactory

कक्षा RMISocketFactory




openjdk

कक्षा RMISocketFactory

सभी लागू इंटरफेस:
RMIClientSocketFactory , RMIServerSocketFactory
public abstract class RMISocketFactory
extends Object
implements RMIClientSocketFactory, RMIServerSocketFactory

RMI कॉल के लिए क्लाइंट और सर्वर सॉकेट प्राप्त करने के लिए RMI रनटाइम द्वारा एक RMISocketFactory आवृत्ति का उपयोग किया जाता है। कोई अनुप्रयोग setSocketFactory विधि का उपयोग करने के लिए अनुरोध कर सकता है कि RMI रनटाइम डिफ़ॉल्ट कार्यान्वयन के बजाय अपने सॉकेट फ़ैक्टरी उदाहरण का उपयोग करता है।

डिफ़ॉल्ट सॉकेट फैक्टरी कार्यान्वयन क्लाइंट सॉकेट बनाने के लिए एक तीन-स्तरीय दृष्टिकोण करता है। सबसे पहले, दूरस्थ VM के लिए एक प्रत्यक्ष सॉकेट कनेक्शन का प्रयास किया जाता है। यदि वह विफल हो जाता है (फ़ायरवॉल के कारण), रनटाइम सर्वर के स्पष्ट पोर्ट नंबर के साथ HTTP का उपयोग करता है। यदि फ़ायरवॉल इस प्रकार के संचार की अनुमति नहीं देता है, तो सर्वर पर एक cgi-bin स्क्रिप्ट के लिए HTTP का उपयोग RMI कॉल को पोस्ट करने के लिए किया जाता है। HTTP टनलिंग तंत्र डिफ़ॉल्ट रूप से अक्षम हैं। यह व्यवहार java.rmi.server.disableHttp संपत्ति द्वारा नियंत्रित किया जाता है, जिसका डिफ़ॉल्ट मान true । इस संपत्ति के मूल्य को false सेट करना HTTP टनलिंग तंत्र को सक्षम करेगा।

पदावनत: HTTP टनलिंग। ऊपर वर्णित HTTP टनलिंग तंत्र, विशेष रूप से एक स्पष्ट पोर्ट के साथ HTTP और एक cgi- बिन स्क्रिप्ट के लिए HTTP, पदावनत हैं। ये HTTP टनलिंग मैकेनिज्म प्लेटफ़ॉर्म की भावी रिलीज़ में हटाने के अधीन हैं।

डिफ़ॉल्ट सॉकेट फैक्टरी कार्यान्वयन वाइल्डकार्ड पते से बंधे सर्वर सॉकेट बनाता है, जो सभी नेटवर्क इंटरफेस से अनुरोध स्वीकार करता है।

कार्यान्वयन नोट:

अनुरोधों की उत्पत्ति को सीमित करने वाले सर्वर सॉकेट बनाने के लिए आप RMISocketFactory वर्ग का उपयोग कर सकते हैं, जो एक विशिष्ट पते से जुड़ा होता है। उदाहरण के लिए, निम्न कोड एक सॉकेट फैक्ट्री को लागू करता है जो सर्वर सॉकेट्स को एक आईपीवी 4 लूपबैक एड्रेस से बांधता है। यह RMI को स्थानीय होस्ट से केवल प्रोसेसिंग अनुरोधों के लिए प्रतिबंधित करता है।

class LoopbackSocketFactory extends RMISocketFactory {
         public ServerSocket createServerSocket(int port) throws IOException {
             return new ServerSocket(port, 5, InetAddress.getByName("127.0.0.1"));
         }

         public Socket createSocket(String host, int port) throws IOException {
             // just call the default client socket factory
             return RMISocketFactory.getDefaultSocketFactory()
                                    .createSocket(host, port);
         }
     }

     // ...

     RMISocketFactory.setSocketFactory(new LoopbackSocketFactory());
java.rmi.server.hostname सिस्टम प्रॉपर्टी को 127.0.0.1 पर सेट करें ताकि यह सुनिश्चित हो सके कि जनरेट किए गए स्टब्स सही नेटवर्क इंटरफेस से कनेक्ट हों।
जबसे:
JDK1.1

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

RMISocketFactory

public RMISocketFactory()

एक RMISocketFactory निर्माण करता है।

जबसे:
JDK1.1

तरीके

createSocket

public abstract Socket createSocket(String host,
                                    int port)
                             throws IOException

निर्दिष्ट होस्ट और पोर्ट से जुड़ा एक क्लाइंट सॉकेट बनाता है।

इसके द्वारा निर्दिष्ट:
इंटरफेस RMIClientSocketFactory में RMIClientSocketFactory
पैरामीटर:
host - यजमान का नाम
port - बंदरगाह संख्या
यह दिखाता है:
निर्दिष्ट होस्ट और पोर्ट से जुड़ा एक सॉकेट।
फेंकता:
IOException - अगर सॉकेट निर्माण के दौरान I / O त्रुटि होती है
जबसे:
JDK1.1

createServerSocket

public abstract ServerSocket createServerSocket(int port)
                                         throws IOException

निर्दिष्ट पोर्ट पर एक सर्वर सॉकेट बनाएं (पोर्ट 0 एक अनाम पोर्ट इंगित करता है)।

इसके द्वारा निर्दिष्ट:
createServerSocket इंटरफ़ेस में RMIServerSocketFactory
पैरामीटर:
port - बंदरगाह संख्या
यह दिखाता है:
निर्दिष्ट पोर्ट पर सर्वर सॉकेट
फेंकता:
IOException - अगर I / O त्रुटि सर्वर सॉकेट निर्माण के दौरान होती है
जबसे:
JDK1.1

setSocketFactory

public static void setSocketFactory(RMISocketFactory fac)
                             throws IOException

वैश्विक सॉकेट फ़ैक्टरी सेट करें जिसमें से आरएमआई सॉकेट्स मिलता है (यदि दूरस्थ वस्तु किसी विशिष्ट क्लाइंट और / या सर्वर सॉकेट के साथ संबद्ध नहीं है)। RMI सॉकेट फैक्टरी केवल एक बार सेट की जा सकती है। नोट: RMISocketFactory केवल तभी सेट किया जा सकता है जब वर्तमान सुरक्षा प्रबंधक सॉकेट फ़ैक्टरी स्थापित करने की अनुमति देता है; यदि अस्वीकृत किया गया है, तो एक SecurityException को फेंक दिया जाएगा।

पैरामीटर:
fac - सॉकेट फैक्टरी
फेंकता:
IOException - यदि RMI सॉकेट फैक्टरी पहले से सेट है
SecurityException - अगर कोई SecurityException checkSetFactory मौजूद है और उसकी checkSetFactory विधि ऑपरेशन की अनुमति नहीं देती है।
जबसे:
JDK1.1
यह भी देखें:
getSocketFactory() , SecurityManager.checkSetFactory()

getSocketFactory

public static RMISocketFactory getSocketFactory()

सेट सॉकेट फैक्ट्री द्वारा सेट सॉकेट फैक्ट्री को setSocketFactory है। यदि कोई सॉकेट फैक्ट्री सेट नहीं की गई है, तो वापस आता है।

यह दिखाता है:
सॉकेट फैक्टरी
जबसे:
JDK1.1
यह भी देखें:
setSocketFactory(RMISocketFactory)

getDefaultSocketFactory

public static RMISocketFactory getDefaultSocketFactory()

इस RMI कार्यान्वयन द्वारा उपयोग किए जाने वाले डिफ़ॉल्ट सॉकेट कारखाने का संदर्भ देता है। यह RMI रनटाइम द्वारा उपयोग किया जाने वाला कारखाना होगा जब getSocketFactory रिटर्न null

यह दिखाता है:
डिफ़ॉल्ट RMI सॉकेट फैक्टरी
जबसे:
JDK1.1

setFailureHandler

public static void setFailureHandler(RMIFailureHandler fh)

यदि सर्वर सॉकेट निर्माण विफल रहता है तो विफलता हैंडलर को RMI रनटाइम द्वारा बुलाया जाता है। डिफ़ॉल्ट रूप से, यदि कोई विफलता हैंडलर स्थापित नहीं है और सर्वर सॉकेट निर्माण विफल रहता है, तो आरएमआई रनटाइम सर्वर सॉकेट को फिर से बनाने का प्रयास करता है।

यदि कोई सुरक्षा प्रबंधक है, तो यह विधि पहले सुरक्षा प्रबंधक की checkSetFactory को checkSetFactory है, यह सुनिश्चित करने के लिए ऑपरेशन विधि की अनुमति है। इसके परिणामस्वरूप एक SecurityException हो सकती है।

पैरामीटर:
fh - विफलता हैंडलर
फेंकता:
SecurityException - अगर कोई SecurityException checkSetFactory मौजूद है और उसकी checkSetFactory विधि ऑपरेशन की अनुमति नहीं देती है।
जबसे:
JDK1.1
यह भी देखें:
getFailureHandler() , RMIFailureHandler.failure(Exception)

getFailureHandler

public static RMIFailureHandler getFailureHandler()

setFailureHandler विधि द्वारा सॉकेट निर्माण विफलता के लिए हैंडलर लौटाता है।

यह दिखाता है:
विफलता हैंडलर
जबसे:
JDK1.1
यह भी देखें:
setFailureHandler(RMIFailureHandler)