ஜாவா ஆர்எம்ஐ பதிவகம் மற்றும் அதை எவ்வாறு பயன்படுத்துவது என்பது பற்றி

ஜாவா ஆர்எம்ஐ பதிவகம் மற்றும் அதை எவ்வாறு பயன்படுத்துவது என்பது பற்றி

ஆர்எம்ஐ குறிக்கிறது தொலை முறை அழைப்பு மேலும், பெயர் குறிப்பிடுவது போல, ஜாவா நிரல் மற்றொரு கணினியில் இயங்கும் ஒரு பொருளின் முறையைத் தொடங்குவதற்கான நெறிமுறை. ஒரு நிரலிலிருந்து ஒரு பொருளை ஏற்றுமதி செய்வதற்கும் (சேவையகம் எனப்படும்) ஒரு ஏபிஐ (அப்ளிகேஷன் புரோகிராமிங் இன்டர்ஃபேஸ்) வழங்குகிறது மற்றும் மற்றொரு புரோகிராமில் (க்ளையன்ட் எனப்படும்) மற்றொரு பொருளில் இயங்கும் பொருளின் முறைகளைத் தூண்டுகிறது.





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





Android இலிருந்து xbox one க்கு அனுப்பப்பட்டது

சேவையக இடைமுகத்தை அறிவித்தல்

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





import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Greeting extends Remote
{
public String greet(String name) throws RemoteException;
}

இடைமுகத்தின் பெயர் அழைக்கப்படுகிறது வாழ்த்துகள் . இது ஒரு ஒற்றை முறையை வழங்குகிறது வாழ்த்து () இது ஒரு பெயரை ஏற்றுக்கொண்டு பொருத்தமான வாழ்த்துக்களைத் தருகிறது.

இந்த இடைமுகத்தை ஏற்றுமதி செய்யக்கூடியதாகக் குறிக்க, அதை நீட்டிக்க வேண்டும் java.rmi.Remote இடைமுகம். மேலும் முறையை அறிவிக்க வேண்டும் வீசுகிறார் உட்பிரிவு பட்டியல் java.rmi.RemoteException எந்தவொரு பயன்பாட்டிற்கும் குறிப்பிட்ட விதிவிலக்குகள் கூடுதலாக. இது கிளையன்ட் குறியீடு போன்ற தொலைநிலை முறை அழைப்பு பிழைகளை கையாள முடியும் (அல்லது பரப்பலாம்) புரவலன்-காணப்படவில்லை , இணைப்பு-தோல்வி , முதலியன



சர்வர் பொருளை செயல்படுத்துதல்

இடைமுகத்தை அறிவித்த பிறகு (இது வாடிக்கையாளர்களால் பயன்படுத்தப்படுகிறது), நாங்கள் சேவையக பக்க பொருளை செயல்படுத்தி, வழங்குகிறோம் வாழ்த்து () காட்டப்பட்டுள்ளபடி முறை. வாழ்த்தை வடிவமைக்க இது ஒரு எளிய வடிவ சரத்தைப் பயன்படுத்துகிறது.

public class GreetingObject implements Greeting
{
private String fmtString = 'Hello, %s';
public String greet(String name)
{
return String.format(this.fmtString, name);
}
}

சேவையகத்தின் முக்கிய முறை

நாம் இப்போது இந்த அனைத்து பகுதிகளையும் ஒன்றிணைத்து செயல்படுத்துவோம் முக்கிய () சேவையக முறை. தொடர்புடைய ஒவ்வொரு படிகளையும் கடந்து செல்வோம்.





  • சேவையக பொருளை செயல்படுத்துவதை உருவாக்குவதே முதல் படி. | _+_ |
  • அடுத்து, ஆர்எம்ஐ இயக்க நேரத்திலிருந்து சேவையக பொருளுக்கு ஒரு ஸ்டப் பெறுகிறோம். சேவையக பொருளின் அதே இடைமுகத்தை ஸ்டப் செயல்படுத்துகிறது. இருப்பினும், இந்த முறை ரிமோட் சர்வர் பொருளுடன் தேவையான தகவல்தொடர்புகளை செயல்படுத்துகிறது. சேவையகப் பொருளில் உள்ள முறையை வெளிப்படையாகத் தெரிவிக்க வாடிக்கையாளரால் இந்த ஸ்டப் பயன்படுத்தப்படுகிறது. | _+_ |
  • ஸ்டப் கிடைத்தவுடன், இந்த பெயரிடப்பட்ட சேவையை பிஎம்ஐக்காக RMI பதிவேட்டில் ஒப்படைக்கிறோம். வாடிக்கையாளர் இந்த சேவையை செயல்படுத்தக் கோரும் போது, ​​சர்வர் பொருளுடன் எவ்வாறு தொடர்புகொள்வது என்பது தெரிந்த ஸ்டப் பெறுகிறது. பின்வருவனவற்றில், நிலையான முறை LocateRegistry.getRegistry () உள்ளூர் பதிவு குறிப்பு பெற பயன்படுத்தப்படுகிறது. தி மறுபரிசீலனை () இந்த முறை பெயரை ஸ்டப்பில் இணைக்கப் பயன்படுகிறது. | _+_ |

முழுமையான முக்கிய முறை.

Greeting greeting = new GreetingObject();

சேவையகத்தை உருவாக்குதல்

சேவையகத்தை உருவாக்குவதை இப்போது பார்ப்போம். விஷயங்களை எளிமையாக வைத்திருக்க, மேவன் போன்ற கட்டும் கருவியைப் பயன்படுத்துவதை விட லினக்ஸில் கட்டளை வரியைப் பயன்படுத்தி நாங்கள் உருவாக்குகிறோம்.





பின்வருபவை மூலக் கோப்புகளை இலக்கு கோப்பகத்தில் வகுப்பு கோப்புகளாக தொகுக்கிறது.

Greeting stub = (Greeting)UnicastRemoteObject.exportObject(greeting, 0);

செயல்படுத்த கோப்பு கோப்புகளை JAR கோப்பில் சேகரிக்கவும்.

String name = 'Greeting';
Registry registry = LocateRegistry.getRegistry(port);
registry.rebind(name, stub);

வாடிக்கையாளரை JAR நூலகத்தில் தொகுப்பதற்குத் தேவையான இடைமுகக் கோப்புகளையும் நாங்கள் சேகரிக்கிறோம்.

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
public class Main
{
static public void main(String[] args) throws Exception
{
if ( args.length == 0 ) {
System.err.println('usage: java Main port#');
System.exit(1);
}
int index = 0;
int port = Integer.parseInt(args[index++]);
String name = 'Greeting';
Greeting greeting = new GreetingObject();
Greeting stub = (Greeting)UnicastRemoteObject.exportObject(greeting, 0);
Registry registry = LocateRegistry.getRegistry(port);
registry.rebind(name, stub);
System.out.println('Greeting bound to '' + name + ''');
}
}

வாடிக்கையாளரை செயல்படுத்துதல்

சேவையக பொருள் முறைகளைத் தொடங்குவதற்கு பயன்படுத்தப்படும் கிளையண்டை செயல்படுத்துவதை இப்போது பார்ப்போம்.

  • சேவையகத்தைப் போலவே, பதிவேட்டில் இயங்கும் புரவலன் பெயரையும், போர்ட் எண்ணையும் குறிப்பிட்டு, பதிவேட்டில் ஒரு குறிப்பைப் பெறுங்கள். | _+_ |
  • அடுத்து, பதிவேட்டில் சேவையைப் பார்க்கவும். தி தேடுதல் () இந்த முறை சேவைகளை வழங்குவதற்குப் பயன்படுத்தக்கூடிய ஒரு ஸ்டப்பை வழங்குகிறது. | _+_ |
  • மேலும் தேவையான வாதங்களை அனுப்பும் முறையை அழைக்கவும். இங்கே, பெயரைக் கடந்து அதை அச்சிடுவதன் மூலம் வாழ்த்துக்களைப் பெறுகிறோம். | _+_ |

முழுமையான வாடிக்கையாளர் குறியீடு:

rm -rf target
mkdir target
javac -d target src/server/*.java

ஆர்எம்ஐ பதிவு

இப்போது சேவையக நிரலை இயக்குவோம், அதனால் அது கோரிக்கைகளை வழங்கத் தொடங்கும்.

jar cvf target/rmi-server.jar -C target server

என்ன இந்த விதிவிலக்கு ? இணைப்பு மறுக்கப்பட்டது .

நீங்கள் இந்த விதிவிலக்கு பெறுவதற்கான காரணம்: போர்ட் 1099 இல் உள்ள உள்ளூர் பதிவேட்டில் இணைக்க முயற்சிக்கும் சேவையகக் குறியீட்டிலிருந்து குறிப்பு. அது தோல்வியுற்றால், நீங்கள் இந்த விதிவிலக்குடன் முடிவடையும்.

RMI பதிவேட்டை இயக்குவதே தீர்வு. RMI பதிவேடு என்பது ஜாவா மெய்நிகர் இயந்திரத்துடன் அனுப்பப்பட்ட ஒரு நிரலாகும் rmiregistry . இது அமைந்திருக்க வேண்டும் நான் ஜாவா மெய்நிகர் இயந்திர நிறுவலின் அடைவு. அதை இயக்குவது மிகவும் எளிது:

jar cvf target/rmi-lib.jar -C target server/Greeting.class

இயல்பாக, பதிவு 1099 போர்ட்டில் கேட்கிறது. அதை இன்னொரு போர்ட்டில் கேட்க, போர்ட் எண்ணை பின்வருமாறு குறிப்பிடவும்:

Registry registry = LocateRegistry.getRegistry(host, port);

குறிப்பிட்ட துறைமுகத்தில் உண்மையில் ஒரு கேட்பவர் இருக்கிறாரா என்று சோதிக்கவும் நெட்ஸ்டாட் கட்டளை :

யூடியூப்பில் இணைக்கப்பட்ட கருத்து என்ன அர்த்தம்
Greeting greeting = (Greeting) registry.lookup(name);

சேவையகத்தை இயக்குகிறது

இப்போது மீண்டும் சேவையகத்தை இயக்க முயற்சிப்போம்.

System.out.println(name + ' reported: ' + greeting.greet(myName));

மீண்டும் ஒரு விதிவிலக்கு! இந்த நேரத்தில் அது என்ன?

சேவையகத்தால் இடைமுக வகுப்பை ஏற்ற முடியவில்லை சர்வர். வாழ்த்துக்கள் . RMI பதிவேட்டில் தேவையான வகுப்பை ஏற்ற முடியவில்லை என்பதால் இது நிகழ்கிறது. எனவே தேவையான வகுப்புகளின் இருப்பிடத்தை நீங்கள் குறிப்பிட வேண்டும். அதைச் செய்வதற்கான ஒரு வழி CLASSPATH சூழல் மாறியைக் குறிப்பிடுவது:

package client;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import server.Greeting;
public class Client
{
static public void main(String[] args) throws Exception
{
if ( args.length != 3 ) {
System.err.println('usage: java Client host port myName');
System.exit(1);
}
int index = 0;
String host = args[index++];
int port = Integer.parseInt(args[index++]);
String myName = args[index++];
String name = 'Greeting';
Registry registry = LocateRegistry.getRegistry(host, port);
Greeting greeting = (Greeting) registry.lookup(name);
System.out.println(name + ' reported: ' + greeting.greet(myName));
}
}

சேவையகத்தை மீண்டும் இயக்க முயற்சிக்கிறது:

java -cp target/rmi-server.jar server.Main 1099
# throws
Exception in thread 'main' java.rmi.ConnectException: Connection refused to host: xxx; nested exception is:
java.net.ConnectException: Connection refused

இப்போது சர்வர் இயங்குகிறது.

வாடிக்கையாளரை இயக்குதல்

அனைத்து பகுதிகளும் ஒன்றுசேர்ந்து செயல்பட்ட பிறகு, வாடிக்கையாளரை இயக்குவது எளிது. அதை செயல்படுத்த பொருத்தமான JAR கள் தேவை. இவற்றில் வர்க்கம் அடங்கும் முக்கிய () முறை மற்றும் இடைமுக வகுப்பு. ஆர்எம்ஐ பதிவு எங்கே இயங்குகிறது என்பதைக் குறிப்பிடும் வாதங்களையும், வாழ்த்துக்கான பெயரையும் இது ஏற்கிறது.

/usr/lib/jvm/jdk1.8.0_71/bin/rmiregistry

சுருக்கம்

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

உங்கள் திட்டத்தில் ஜாவா ஆர்எம்ஐ பயன்படுத்துகிறீர்களா? உங்கள் அனுபவம் என்ன? நீங்கள் விசாரித்த மாற்று வழிகள் ஏதேனும் உள்ளதா? தயவுசெய்து கீழே உள்ள கருத்துகளில் எங்களுக்குத் தெரியப்படுத்துங்கள்.

பகிர் பகிர் ட்வீட் மின்னஞ்சல் அனிமேஷன் பேச்சுக்கான தொடக்க வழிகாட்டி

அனிமேஷன் பேச்சு ஒரு சவாலாக இருக்கலாம். உங்கள் திட்டத்தில் உரையாடலைச் சேர்க்க நீங்கள் தயாராக இருந்தால், உங்களுக்கான செயல்முறையை நாங்கள் உடைப்போம்.

அடுத்து படிக்கவும்
தொடர்புடைய தலைப்புகள்
  • நிரலாக்க
  • ஜாவா
எழுத்தாளர் பற்றி ஜெய் ஸ்ரீதர்(17 கட்டுரைகள் வெளியிடப்பட்டன) ஜெய் ஸ்ரீதரிடமிருந்து மேலும்

எங்கள் செய்திமடலுக்கு குழுசேரவும்

தொழில்நுட்ப குறிப்புகள், மதிப்புரைகள், இலவச மின் புத்தகங்கள் மற்றும் பிரத்யேக ஒப்பந்தங்களுக்கு எங்கள் செய்திமடலில் சேரவும்!

குழுசேர இங்கே சொடுக்கவும்