RMI ย่อมาจาก Remote Method Invocation . เป็นกลไกที่ช่วยให้อ็อบเจ็กต์ที่อยู่ในระบบเดียว (JVM) เข้าถึง/เรียกใช้อ็อบเจ็กต์ที่ทำงานบน JVM อื่นได้
RMI ใช้เพื่อสร้างแอปพลิเคชันแบบกระจาย มันให้การสื่อสารระยะไกลระหว่างโปรแกรม Java มีให้ในแพ็คเกจ java.rmi .
ในการเขียนแอปพลิเคชัน RMI Java คุณจะต้องทำตามขั้นตอนด้านล่าง -
ขั้นตอนที่ 1 − กำหนดอินเทอร์เฟซระยะไกล
อินเทอร์เฟซระยะไกลให้คำอธิบายของวิธีการทั้งหมดของวัตถุระยะไกลโดยเฉพาะ ไคลเอ็นต์สื่อสารกับอินเทอร์เฟซระยะไกลนี้ ดังนั้น คุณต้องสร้างอินเทอร์เฟซที่ขยายอินเทอร์เฟซที่กำหนดไว้ล่วงหน้า java.rmi.รีโมต .
ตัวอย่าง
import java.rmi.Remote; import java.rmi.RemoteException; public interface Hello extends Remote { void printMsg() throws RemoteException; }
ขั้นตอนที่ 2 - พัฒนาคลาส Implementation (วัตถุระยะไกล)
เราจำเป็นต้องใช้อินเทอร์เฟซระยะไกลที่สร้างขึ้นในขั้นตอนก่อนหน้านี้ (เราสามารถเขียนคลาสการนำไปใช้แยกกัน หรือเราสามารถทำให้โปรแกรมเซิร์ฟเวอร์ใช้อินเทอร์เฟซนี้โดยตรง) ดังนั้น จัดเตรียมการใช้งานให้กับวิธีนามธรรมทั้งหมดของอินเทอร์เฟซระยะไกล
ตัวอย่าง
public class ImplExample implements Hello { public void printMsg() { System.out.println("This is an example RMI program"); } }
ขั้นตอนที่ 3 - พัฒนาโปรแกรมเซิร์ฟเวอร์
โปรแกรมเซิร์ฟเวอร์ RMI ควรใช้อินเทอร์เฟซระยะไกลหรือขยายคลาสการใช้งาน ที่นี่ เราควรสร้างวัตถุระยะไกลและผูกกับ RMIregistry . ดังนั้นให้พัฒนาโปรแกรมเซิร์ฟเวอร์ดังแสดงด้านล่าง -
ตัวอย่าง
import java.rmi.registry.Registry; import java.rmi.registry.LocateRegistry; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class Server extends ImplExample { public Server() {} public static void main(String args[]) { try { ImplExample obj = new ImplExample(); Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0); Registry registry = LocateRegistry.getRegistry(); registry.bind("Hello", stub); System.err.println("Server ready"); } catch (Exception e) { System.err.println("Server exception: " + e.toString()); e.printStackTrace(); } } }
Step4 - พัฒนาโปรแกรมไคลเอนต์
เขียนโปรแกรมไคลเอนต์ในนั้น ดึงวัตถุระยะไกลและเรียกใช้วิธีการที่จำเป็นโดยใช้วัตถุนี้
ตัวอย่าง
import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class Client { private Client() {} public static void main(String[] args) { try { Registry registry = LocateRegistry.getRegistry(null); Hello stub = (Hello) registry.lookup("Hello"); stub.printMsg(); } catch (Exception e) { System.err.println("Client exception: " + e.toString()); e.printStackTrace(); } } }
ขั้นตอนที่ 5 – รวบรวมแอปพลิเคชัน
เพื่อรวบรวมแอปพลิเคชัน -
-
รวบรวมอินเทอร์เฟซระยะไกล
-
รวบรวมคลาสการใช้งาน
-
รวบรวมโปรแกรมเซิฟเวอร์
-
รวบรวมโปรแกรมไคลเอนต์
ขั้นตอนที่ 6 - ดำเนินการแอปพลิเคชัน
-
เริ่ม rmi รีจิสทรีโดยใช้คำสั่งต่อไปนี้
Start rmiregistry
สิ่งนี้จะเริ่มต้น rmi รีจิสตรีในหน้าต่างแยกต่างหาก
-
เรียกใช้ไฟล์คลาสเซิร์ฟเวอร์ดังที่แสดงด้านล่าง -
-
เรียกใช้ไฟล์คลาสไคลเอนต์ดังที่แสดงด้านล่าง -
-
การยืนยัน − ทันทีที่คุณเริ่มไคลเอนต์ คุณจะเห็นผลลัพธ์ต่อไปนี้ในเซิร์ฟเวอร์