Java remote method invocation
ಕಂಪ್ಯೂಟಿಂಗ್ನಲ್ಲಿ, ಜಾವಾ ರಿಮೋಟ್ ಮೆಥಡ್ ಇನ್ವೊಕೇಷನ್ (ಜಾವಾ ಆರ್ಎಂಐ) ಎಂಬುದು ಜಾವಾ ಎಪಿಐ ಆಗಿದ್ದು, ಇದು ರಿಮೋಟ್ ಮೆಥಡ್ ಇನ್ವೊಕೇಷನ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ, ಇದು ರಿಮೋಟ್ ಪ್ರೊಸೀಜರ್ ಕಾಲ್ಗಳಿಗೆ (ಆರ್ಪಿಸಿ) ಸಮಾನವಾದ ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಆಗಿದೆ, ಇದು ಸರಣಿ ಜಾವಾ ವರ್ಗಗಳ ನೇರ ವರ್ಗಾವಣೆ ಮತ್ತು ವಿತರಿಸಿದ ಕಸ-ಸಂಗ್ರಹಣೆಗೆ ಬೆಂಬಲ ನೀಡುತ್ತದೆ. ಮೂಲ ಅನುಷ್ಠಾನವು ಜಾವಾ ವರ್ಚುವಲ್ ಮೆಷಿನ್ (ಜೆವಿಎಂ) ವರ್ಗ-ಪ್ರಾತಿನಿಧ್ಯ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಇದು ಒಂದು ಜೆವಿಎಂನಿಂದ ಇನ್ನೊಂದಕ್ಕೆ ಕರೆಗಳನ್ನು ಮಾಡಲು ಮಾತ್ರ ಬೆಂಬಲಿಸುತ್ತದೆ. ಈ ಜಾವಾ-ಮಾತ್ರ ಅನುಷ್ಠಾನಕ್ಕೆ ಆಧಾರವಾಗಿರುವ ಶಿಷ್ಟಾಚಾರವನ್ನು ಜಾವಾ ರಿಮೋಟ್ ಮೆಥಡ್ ಪ್ರೋಟೋಕಾಲ್ (ಜೆಆರ್ಎಂಪಿ) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಜೆವಿಎಂ ಅಲ್ಲದ ಸನ್ನಿವೇಶದಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಕೋಡ್ ಅನ್ನು ಬೆಂಬಲಿಸುವ ಸಲುವಾಗಿ, ಪ್ರೋಗ್ರಾಮರ್ಗಳು ನಂತರ ಕೋರ್ಬಾ ಆವೃತ್ತಿಯನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದರು. ಆರ್ಎಂಐ ಎಂಬ ಪದದ ಬಳಕೆಯು ಕೇವಲ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಸೂಚಿಸಬಹುದು ಅಥವಾ ಎಪಿಐ ಮತ್ತು ಜೆಆರ್ಎಂಪಿ, ಐಐಓಪಿ ಅಥವಾ ಇತರ ಅನುಷ್ಠಾನ ಎರಡನ್ನೂ ಸೂಚಿಸಬಹುದು, ಆದರೆ ಆರ್ಎಂಐ-ಐಐಓಪಿ (ಆರ್ಎಂಐ ಓವರ್ ಐಐಓಪಿ) ಎಂಬ ಪದವು ನಿರ್ದಿಷ್ಟವಾಗಿ ಆರ್ಎಂಐ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಇದು ಹೆಚ್ಚಿನ ಕಾರ್ಯವನ್ನು ಬೆಂಬಲಿಸುವ ಕೋರ್ಬಾ ಅನುಷ್ಠಾನಕ್ಕೆ ನಿಯೋಜಿಸುತ್ತದೆ. ಜಾವಾ ಆರ್ಎಂಐಯ ಮೂಲ ಕಲ್ಪನೆ, ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ ಗಾರ್ಬೇಜ್-ಕಲೆಕ್ಷನ್ (ಡಿಜಿಸಿ) ಪ್ರೋಟೋಕಾಲ್, ಮತ್ತು ಮೂಲ ಸೂರ್ಯನ ಅನುಷ್ಠಾನಕ್ಕೆ ಆಧಾರವಾಗಿರುವ ಹೆಚ್ಚಿನ ವಾಸ್ತುಶಿಲ್ಪವು ಮಾಡ್ಯುಲಾ-3ರ "ನೆಟ್ವರ್ಕ್ ಆಬ್ಜೆಕ್ಟ್ಸ್" ವೈಶಿಷ್ಟ್ಯದಿಂದ ಬಂದಿದೆ. ಮೂಲ ಆರ್ಎಂಐ ಎಪಿಐನ ಪ್ರೋಗ್ರಾಮರ್ಗಳು ಎಚ್. ಟಿ. ಟಿ. ಪಿ ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್ನಂತಹ ವಿವಿಧ ಅನುಷ್ಠಾನಗಳನ್ನು ಬೆಂಬಲಿಸಲು ಕೋಡ್ ಅನ್ನು ಸ್ವಲ್ಪಮಟ್ಟಿಗೆ ಸಾಮಾನ್ಯೀಕರಿಸಿದರು. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಆರ್ಎಂಐ ಇಂಟರ್ಫೇಸ್ಗೆ ಹೊಂದಿಕೊಳ್ಳುವ ಸಲುವಾಗಿ "ಮೌಲ್ಯದ ಮೂಲಕ" ವಾದಗಳನ್ನು ರವಾನಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಕೋರ್ಬಾಕ್ಕೆ ಸೇರಿಸಲಾಯಿತು. ಆದರೂ, ಆರ್ಎಂಐ-ಐಐಓಪಿ ಮತ್ತು ಜೆಆರ್ಎಂಪಿ ಅನುಷ್ಠಾನಗಳು ಸಂಪೂರ್ಣವಾಗಿ ಒಂದೇ ರೀತಿಯ ಸಂಪರ್ಕಸಾಧನಗಳನ್ನು ಹೊಂದಿಲ್ಲ. ಆರ್ಎಂಐ ಕಾರ್ಯಕ್ಷಮತೆಯು ಪ್ಯಾಕೇಜಿನಲ್ಲಿ ಬರುತ್ತದೆ, ಆದರೆ ಸೂರ್ಯನ ಹೆಚ್ಚಿನ ಅನುಷ್ಠಾನವು sun.rmi ಪ್ಯಾಕೇಜಿನಲ್ಲಿದೆ. ಜಾವಾ 5ಕ್ಕಿಂತ ಮೊದಲು ಜಾವಾ ಆವೃತ್ತಿಗಳಲ್ಲಿ ಡೆವಲಪರ್ಗಳು ಆರ್ಎಂಐ ಸ್ಟಬ್ಗಳನ್ನು ಆರ್ಮಿಕ್ ಬಳಸಿ ಪ್ರತ್ಯೇಕ ಸಂಕಲನ ಹಂತದಲ್ಲಿ ಕಂಪೈಲ್ ಮಾಡಬೇಕಾಗಿತ್ತು ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ಜಾವಾ ಮತ್ತು ಅದರಾಚೆಗಿನ ಆವೃತ್ತಿ 5ಕ್ಕೆ ಇನ್ನು ಮುಂದೆ ಈ ಹಂತದ ಅಗತ್ಯವಿಲ್ಲ. ಜಿನಿ ಆವೃತ್ತಿಯು ಜಾವಾದಲ್ಲಿ ಆರ್ಎಂಐನ ಹೆಚ್ಚು ಸುಧಾರಿತ ಆವೃತ್ತಿಯನ್ನು ನೀಡುತ್ತದೆ. ಇದು ಇದೇ ರೀತಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಆದರೆ ಹೆಚ್ಚು ಸುಧಾರಿತ ಭದ್ರತೆ, ಆಬ್ಜೆಕ್ಟ್ ಡಿಸ್ಕವರಿ ಸಾಮರ್ಥ್ಯಗಳು ಮತ್ತು ವಿತರಿಸಿದ ಆಬ್ಜೆಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಇತರ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಉದಾಹರಣೆ ಈ ಕೆಳಗಿನ ವರ್ಗಗಳು ಸಂದೇಶವನ್ನು ಪ್ರದರ್ಶಿಸುವ ಆರ್ಎಂಐ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸರಳ ಕ್ಲೈಂಟ್-ಸರ್ವರ್ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತವೆ. ಕ್ಲೈಂಟ್ ಬಳಸುವ ಮತ್ತು ಸರ್ವರ್ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು RmiServerIntf ಇಂಟರ್ಫೇಸ್ ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಆಮದು java.rmi.Remote; ಆಮದು java.rmi.RemoteException; ಸಾರ್ವಜನಿಕ ಇಂಟರ್ಫೇಸ್ RmiServerIntf ರಿಮೋಟ್ ಅನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ {ಸ್ಟ್ರಿಂಗ್ ಗೆಟ್ಮೆಸೇಜ್ () ರಿಮೋಟ್ಎಕ್ಸೆಪ್ಶನ್ ಅನ್ನು ಎಸೆಯುತ್ತದೆ;} RmiServer ವರ್ಗವು RMI ವಿನಂತಿಗಳನ್ನು ಕೇಳುತ್ತದೆ ಮತ್ತು ಕ್ಲೈಂಟ್ ರಿಮೋಟ್ ವಿಧಾನಗಳನ್ನು ಆಹ್ವಾನಿಸಲು ಬಳಸುವ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಆಮದು java.rmi.Naming; ಆಮದು java.rmi.RemoteException; ಆಮದು java.rmi.server.UnicastRemoteObject; ಆಮದು java.rmi.registry. *; ಪಬ್ಲಿಕ್ ಕ್ಲಾಸ್ RmiServer ವಿಸ್ತರಿಸುತ್ತದೆ UnicastRemoteObject ಯುನಿಕಾಸ್ಟ್ ರಿಮೋಟ್ಇಂಟ್ಫ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ [ಪಬ್ಲಿಕ್ ಸ್ಟ್ಯಾಟಿಕ್ ಫೈನಲ್ ಸ್ಟ್ರಿಂಗ್ ಮೆಸ್ಸೇಜ್ = "ಹಲೋ ವರ್ಲ್ಡ್"; ಪಬ್ಲಿಕ್ RmiServer () ರಿಮೋಟ್ಎಕ್ಸೆಪ್ಶನ್ ಅನ್ನು ಎಸೆಯುತ್ತದೆ [ಸೂಪರ್ (0);// 'ಆರ್ಮಿಕ್' ಹಂತವನ್ನು ತಪ್ಪಿಸಲು ಅಗತ್ಯವಾಗಿದೆ, ಕೆಳಗೆ ನೋಡಿ] ಸಾರ್ವಜನಿಕ ಸ್ಟ್ರಿಂಗ್ ಗೆಟ್ಮೆಸೇಜ್ () {ರಿಟರ್ನ್ ಮೆಸ್ಸೇಜ್;} ಸಾರ್ವಜನಿಕ ಸ್ಟ್ಯಾಟಿಕ್ ಶೂನ್ಯ ಮುಖ್ಯ (ಸ್ಟ್ರಿಂಗ್ ಆರ್ಗ್ಸ್ [] ಎಕ್ಸೆಪ್ಶನ್ ಅನ್ನು ಎಸೆಯುತ್ತದೆ [System.out.println ("ಆರ್ಎಂಐ ಸರ್ವರ್ ಪ್ರಾರಂಭವಾಯಿತು"); ನೋಂದಾವಣೆ ರಚನೆಗಾಗಿ ವಿಶೇಷ ಎಕ್ಸೆಪ್ಶನ್ ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ LocateRegistry.createRegistry (1099); System.out.println ("ಜಾವಾ ಆರ್ಎಂಐ ರೆಗ್") ");} ಕ್ಯಾಚ್ (ರಿಮೋಟ್ ಎಕ್ಸೆಪ್ಶನ್ ಇ) {// ಏನನ್ನೂ ಮಾಡಬೇಡಿ, ದೋಷ ಎಂದರೆ ನೋಂದಾವಣೆಯು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ System.out.println (" ಜಾವಾ ಆರ್ಎಂಐ ನೋಂದಾವಣೆಯು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ. ");}// ಇನ್ಸ್ಟಾಂಟಿಏಟ್ RmiServer RmiServer ಪರಿಚಾರಕ = ಹೊಸ RmiServer ();// ಈ ವಸ್ತುವಿನ ನಿದರ್ಶನವನ್ನು" RmiServer "Naming.rebind ("// ಲೋಕಲ್ ಹೋಸ್ಟ್/RmiServer ", ಪರಿಚಾರಕ); System.out.println (" ಪೀರ್ ಸರ್ವರ್ ನೋಂದಾವಣೆಯಲ್ಲಿ ಬದ್ಧವಾಗಿದೆ ";}} RmiClient ವರ್ಗವು ಸರ್ವರ್ನಲ್ಲಿ ವಾಸಿಸುವ ದೂರಸ್ಥ ವಸ್ತುವಿಗೆ ಉಲ್ಲೇಖವನ್ನು (ಪ್ರಾಕ್ಸಿ) ಪಡೆಯುವ ಕ್ಲೈಂಟ್ ಆಗಿದೆ ಮತ್ತು ಸಂದೇಶವನ್ನು ಪಡೆಯಲು ಅದರ ವಿಧಾನವನ್ನು ಆಹ್ವಾನಿಸುತ್ತದೆ. ಸರ್ವರ್ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು java.rmi.Remote ಬದಲಿಗೆ java.io.Serializable ಅನ್ನು ಅಳವಡಿಸಿದರೆ, ಅದನ್ನು ಕ್ರಮಬದ್ಧಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಕ್ಲೈಂಟ್ಗೆ ಮೌಲ್ಯವಾಗಿ ರವಾನಿಸಲಾಗುತ್ತದೆ. ಆಮದು java.rmi.Naming; ಸಾರ್ವಜನಿಕ ವರ್ಗದ RmiClient {ಸಾರ್ವಜನಿಕ ಸ್ಥಿರ ಶೂನ್ಯ ಮುಖ್ಯ (ಸ್ಟ್ರಿಂಗ್ ಆರ್ಗ್ಸ್ []) ಎಕ್ಸೆಪ್ಶನ್ ಅನ್ನು ಎಸೆಯುತ್ತದೆ {RmiServerIntf ಸರ್ವರ್ = (RmiServerIntf) Naming.lookup ("// ಲೋಕಲ್ ಹೋಸ್ಟ್/RmiServer"); System.out.println (server.getMessage ();} ಈ ಉದಾಹರಣೆಯನ್ನು ಚಲಾಯಿಸುವ ಮೊದಲು, ನಾವು ಬಳಸಿದ ಇಂಟರ್ಫೇಸ್ಗಾಗಿ ನಾವು 'ಸ್ಟಬ್' ಫೈಲ್ ಅನ್ನು ಮಾಡಬೇಕಾಗಿದೆ. ಈ ಕಾರ್ಯಕ್ಕಾಗಿ ನಮ್ಮಲ್ಲಿ ಆರ್ಎಂಐ ಕಂಪೈಲರ್ ಇದೆ-'ಆರ್ಮಿಕ್' ಟಿಪ್ಪಣಿಃ ನಾವು '*. ಕ್ಲಾಸ್' ಕಡತದಿಂದ ಸ್ಟಬ್ ಫೈಲ್ ಅನ್ನು ರಿಮೋಟ್ ಇಂಟರ್ಫೇಸ್ನ ಅನುಷ್ಠಾನದೊಂದಿಗೆ ತಯಾರಿಸುತ್ತೇವೆ, '*. ಜಾವಾ' ಕಡತದಿಂದ ಅಲ್ಲ. ಆರ್ಮಿಕ್ ಆರ್ಮಿಸರ್ವರ್ ಗಮನಿಸಿ, ಜೆ2ಎಸ್ಇಯ ಆವೃತ್ತಿ 5 ರಿಂದ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ರಚಿಸಲಾದ ಸ್ಟಬ್ ಫೈಲ್ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಮತ್ತು ಆರ್ಮಿಕ್ ಅನ್ನು ಹಿಂದಿನ ರನ್ಟೈಮ್ಗಳೊಂದಿಗೆ ಹಿಮ್ಮುಖ ಹೊಂದಾಣಿಕೆಗೆ ಮಾತ್ರ ಒದಗಿಸಲಾಗಿದೆ, ಅಥವಾ ದೂರಸ್ಥ ವಸ್ತುಗಳನ್ನು ರಫ್ತು ಮಾಡುವಾಗ ಸ್ಪಷ್ಟವಾದ ಪೋರ್ಟ್ ಸಂಖ್ಯೆಯನ್ನು (ಅಥವಾ ಶೂನ್ಯ) ಒದಗಿಸದ ಪ್ರೋಗ್ರಾಂಗಳಿಗೆ ಮಾತ್ರ ಒದಗಿಸಲಾಗಿದೆ, ಇದು ಯೂನಿಕಾಸ್ಟ್ ರಿಮೋಟ್ ಆಬ್ಜೆಕ್ಟ್ಗಾಗಿ ಜಾವಡಾಕ್ನಲ್ಲಿ ವಿವರಿಸಿದಂತೆ ರಚಿಸಲಾದ ಸ್ಟಬ್ಗಳು ಸಾಧ್ಯವಾಗಲು ಅಗತ್ಯವಾಗಿರುತ್ತದೆ. ಮೇಲಿನ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ನಲ್ಲಿನ ಕಾಮೆಂಟ್ ಅನ್ನು ನೋಡಿ. ಉಲ್ಲೇಖಗಳು ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಜಾವಾ ಆರ್ಎಂಐ ಟ್ಯುಟೋರಿಯಲ್-ಆರ್ಎಂಐ ಕಲಿಯಲು ಉತ್ತಮ ಆರಂಭಿಕ ಹಂತವಾಗಿದೆ. ಜಾವಾ ಆರ್ಎಂಐ ಆನ್ಲೈನ್ ತರಬೇತಿಯಾದ ಆರ್ಎಂಐನಲ್ಲಿ ಹಲೋ ವರ್ಲ್ಡ್ ಅನ್ನು ಸಹ ಪರಿಶೀಲಿಸಿ-ಜಾವಾ ಆರ್ಎಂಐ ತರಬೇತಿಗೆ ತುಂಬಾ ಒಳ್ಳೆಯದು ಮತ್ತು ಉಲ್ಲೇಖವಾಗಿ ಜೆಡಿಕೆ ಡಾಕ್ಸ್ನಲ್ಲಿರುವ ಆರ್ಎಂಐ ಪುಟ (ಆರ್ಎಂಐ ಪ್ಯಾಕೇಜ್ಗಾಗಿ ಸೂರ್ಯನ ಜಾವಾ ಎಪಿಐ ರೆಫರೆನ್ಸ್) ಪ್ರೋಗ್ರಾಮಿಂಗ್ ವೆಬ್ಲಾಜಿಕ್ ಆರ್ಎಂಐ-ಒರಾಕಲ್ ವೆಬ್ಲಾಜಿಕ್ ನಲ್ಲಿ ಆರ್ಎಂಐಗೆ ಪರಿಚಯ. ಜನರಲ್ ರಿಮೋಟ್ ಮೆಥಡ್ ಇನ್ವೊಕೇಷನ್ ಆರ್ಎಂಐ ರಿಮೋಟ್ ಪ್ರೊಸೀಜರ್ ಕಾಲ್ ಆರ್ಟಿಕಲ್ಸ್ ಉದಾಹರಣೆಗೆ ಜಾವಾ ಕೋಡ್