Saturday, March 16, 2019

ரிமோட் மெத்தட் இன்வோகேசன்(RMI ஜாவா)



ரிமோட் மெத்தட் இன்வோகேசன் என்பது ஒரு ஜாவா ஆப்ஜெக்டை மற்றொரு மெசினில் உள்ள மெத்த்டை அழைக்க முடிவதாகும்.RMI ஆனது ஜாவா நிரல்களுக்கு இடையே ரிமோட் தொடர்பு கொள்ளும் திறனை வழங்குகின்றது.டிஸ்ட்ரிபியூட்டட் பயன்பாடுகளை உருவாக்க RMI பயன்படுகின்றது.

Concept of RMI application
ஒரு ஆர்எம்ஐ பயன்பாடானது கிளையண்ட் நிரல், சர்வர் நிரல் என இரு வகையாக பிரிக்கப்படுகின்றது. சர்வர் நிரலானது ஒரு ரிமோட் ஆப்ஜெக்டை உருவாக்கி கிளையன்ட் நிரல் ஆனது அதன் மெத்தடை அழைப்பதற்கு தயார் நிலையில் இருக்கும். கிளையண்ட் நிரல் ரிமோட் ஆப்ஜெக்டுகளுக்கு கோரிக்கை அனுப்பி மெத்தட்களை அழைக்கின்றது.Stub மற்றும் Skeleton  ஆகியவை ரிமோட் ஆப்ஜெக்டுகளுக்கு இடையே தொடர்பு கொள்ள உதவும் இரு முக்கிய ஆப்ஜெக்டுகளாகும்.

Stub and Skeleton
Stub ஆனது கிளையண்ட் நிரலில் கேட் வே ஆக செயற்படுகின்றது. இது கிளையண்டில் வசித்து skeleton ஆப்ஜெக்டுடன் தொடர்பு கொள்கின்றது. இது ரிமோட் ஆப்ஜெக்டுடன் தொடர்பை ஏற்படுத்தி கோரிக்கையை அனுப்புகின்றது.
Skeleton ஆப்ஜெக்ட் ஆனது சர்வர் நிரலில் இருக்கும். இது stub –ல் இருந்து வரும் கோரிக்கையை  ரிமோட் ஆப்ஜெக்டுக்கு அனுப்புகின்றது.

Creating a Simple RMI application involves following steps
  • ரிமோட் இன்டெர்ஃபேஸை டிஃபைன் செய்தல்.
  • ரிமோட் இன்டெர்ஃபேஸை இம்ப்ளிமென்ட் செய்தல்.
  • ரிமோட் அப்ளிகேசனை உருவாக்கி ஸ்டார்ட் செய்தல்
  • கிளையண்ட் உருவாக்கி ஸ்டார்ட் செய்தல்

ரிமோட் இன்டெர்ஃபேஸை டிஃபைன் செய்தல்
ரிமோட் இன்டெஃபேஸ் ஆனது கிளையண்டால் அழைக்கபட வேண்டிய மெத்தட்களை அறிவிக்கின்றது. கிளையண்ட் நிரல்களானது இந்த இண்டெர் ஃபேஸ்களுடன் தொடர்பு கொள்ளுமே அன்றி இதை இம்ப்ளிமென்ட் செய்யும் கிளாஸ்களுடன் தொடர்பு கொள்ளாது. ஒரு ரிமோட் இன்டெர்ஃபேஸ் ஆனது java.rmi என்கின்ற பேக்கேஜில் உள்ள Remote என்ற இண்டர்ஃபேசை எக்ஸ்டண்ட் செய்ய வேண்டும்.
import java.rmi.*;
public interface AddServerInterface extends Remote
{
public int sum(int a,int b);
}

ரிமோட் இன்டெர்ஃபேஸை இம்ப்ளிமெண்ட் செய்தல்.
ரிமோட் இன்டெர்ஃபேசை இம்ப்ளிமென்ட் செய்யும் கிளாஸ் ஆனது  UnicastRemoteObject  என்ற கிளாஸை இன்ஹெரிட்  செய்ய வேண்டும். அல்லது UnicastRemoteObject  என்ற கிளாசில் உள்ள exportObject() என்ற மெத்தடை பயன்படுத்த வேண்டும்.
import java.rmi.*;
import java.rmi.server.*;
public class Adder extends UnicastRemoteObject implements AddServerInterface
{
Adder()throws RemoteException{
super();
}
public int sum(int a,int b)
{
return a+b;
}
}

 AddServer  உருவாக்கி  rmi service ஹோஸ்ட் செய்தல்
நீங்கள் ஒரு சர்வர் பயன்பாட்டை உருவாக்கி rmi service Adder என்பதை ஹோஸ்ட் செய்ய வேண்டும்.. இது java.rmi.Naming என்ற கிளாஸில் உள்ள rebind() என்ற மெத்தடை பயன்படுத்துகின்றது. இந்த rebind() மெத்தட் இரண்டு ஆர்க்கிமெண்ட்களை ஏற்கின்றது. அதில் முதலாவானது ஆப்ஜெக்ட் ரெஃப்ரென்ஸ் பெயரையும் இரண்டாவானது Adder கிளாசின் இன்ஸ்டன்ஸையும் கொண்டுள்ளது.
import java.rmi.*;
import java.rmi.registry.*;
public class AddServer{
public static void main(String args[]){
try{
AddServerInterface addService=new Adder();
Naming.rebind("AddService",addService);
//addService object is hosted with name AddService.

}catch(Exception e){System.out.println(e);}
}
}

 client application உருவாக்குதல்
Client application ஆனது Naming கிளாஸின் lookup() என்ற மெத்தடை அழைக்கும் ஜாவா நிரலை கொண்டுள்ளது. இந்த மெத்தட் ஒரு rmi url ஆர்க்கிமெண்டை ஏற்கின்றது. இது AddServerInterfaceன் ரெஃபெரென்ஸை திருப்பி அனுப்புகின்றது.இந்த ஆப்ஜெக்டில்தான் எல்லா மெத்தட் அழைப்பும் செய்ய வேண்டும்.
import java.rmi.*;
public class Client{
public static void main(String args[]){
try{
AddServerInterface st=(AddServerInterface)Naming.lookup("rmi://"+args[0]+"/AddService");
System.out.println(st.sum(25,8));
}catch(Exception e){System.out.println(e);}
}
}

Steps to run this RMI application
மேலே உள்ள எல்லா ஜாவா ஃபைல்களையும் rmi என்ற ஃபோல்டருக்குள் சேமிப்பதாக எடுத்துக் கொள்வோம்.
இப்பொழுது எல்லா ஜாவா நிரல்களையும் கம்பைல் செய்வோம்.
javac *.java
  • RMI registry  தொடக்குவித்தல்.
start rmiregistry
  • சர்வர் ஃபைலை இயக்குதல்
java AddServer
  • மற்றொரு கமாண்ட் பிராம்ப்ட் உருவாக்கி  client நிரலை இயக்குவோம் இதற்கு லோக்கல் ஹோஸ்ட் போர் எண்ணை பாஸ் செய்வோம்.
java Client 127.0.0.1


நன்றி
முத்து கார்த்திகேயன், மதுரை.


ads Udanz

1 comment: