Pelaksanaan asli tergantung pada Java Virtual Machine (JVM) mekanisme representasi kelas dan dengan demikian hanya mendukung membuat panggilan dari satu JVM yang lain. Protokol yang mendasari Java-satunya pelaksanaan ini dikenal sebagai Java Remote Method Protocol (JRMP).
Dalam rangka mendukung kode yang berjalan dalam konteks non-JVM, versi CORBA kemudian dikembangkan.
Penggunaan istilah RMI dapat menunjukkan hanya antarmuka pemrograman atau mungkin menandakan kedua API dan JRMP, IIOP, atau implementasi lain, sedangkan jangka RMI-IIOP (baca: RMI lebih IIOP) khusus menunjukkan antarmuka RMI mendelegasikan sebagian fungsi untuk yang mendukung pelaksanaan CORBA.
Ide dasar dari Java RMI, yang didistribusikan pengumpulan sampah (DGC) protokol, dan banyak dari arsitektur yang mendasari pelaksanaan Sun asli, berasal dari fitur 'jaringan objek' dari Modula-3.
Isi
1 Kode Generalized
2 versi Jini
3 Contoh
4 Referensi
5 Pranala luar
kode Generalized
Para programer dari API RMI asli umum kode agak untuk mendukung implementasi yang berbeda, seperti transportasi HTTP. Selain itu, kemampuan untuk melewati argumen "dengan nilai" telah ditambahkan ke CORBA agar kompatibel dengan antarmuka RMI. Namun, RMI-IIOP dan JRMP implementasi tidak memiliki antarmuka sepenuhnya identik.
fungsi RMI datang dalam java.rmi paket, sementara sebagian besar implementasi Sun terletak di paket sun.rmi. Perhatikan bahwa dengan versi Java sebelum Java 5.0 pengembang harus mengkompilasi RMI bertopik dalam langkah kompilasi terpisah menggunakan rmic. Versi 5.0 dari Jawa dan di luar tidak lagi memerlukan langkah ini.versi Jini
Jini menawarkan versi yang lebih canggih dari RMI di Jawa. Ini berfungsi sama tetapi memberikan lebih maju mencari kemampuan dan mekanisme untuk aplikasi objek terdistribusi. [1]Contoh
Kelas berikut menerapkan program client-server sederhana menggunakan RMI yang menampilkan pesan.
RmiServer kelas - mendengarkan permintaan RMI dan mengimplementasikan antarmuka yang digunakan oleh klien untuk memanggil metode jarak jauh.
impor java.rmi.Naming;import java.rmi.RemoteException;impor java.rmi.server.UnicastRemoteObject;mengimpor java.rmi.registry *.;public class RmiServer meluas UnicastRemoteObject mengimplementasikan RmiServerIntf {
public static final String MESSAGE = "Hello World";
publik RmiServer () throws RemoteException {
super (0); // Diperlukan untuk menghindari 'rmic' langkah, lihat di bawah
}
public String getMessage () {
kembali PESAN;
}
public static void main (String args []) throws Exception {
System.out.println ( "RMI Server mulai");
try {// handler pengecualian khusus untuk pembuatan registry
LocateRegistry.createRegistry (1099);
System.out.println ( "java RMI registry yang dibuat.");
} Catch (RemoteException e) {
// Melakukan apa-apa, kesalahan berarti registri sudah ada
System.out.println ( "java RMI registry sudah ada.");
}
// Instantiate RmiServer
RmiServer obj = new RmiServer ();
// Mengikat contoh objek ini untuk nama "RmiServer"
Naming.rebind ( "// localhost / RmiServer", obj);
System.out.println ( "PeerServer terikat dalam registri");
}}
RmiServerIntf antarmuka - mendefinisikan antarmuka yang digunakan oleh klien dan dilaksanakan oleh server.
impor java.rmi.Remote;import java.rmi.RemoteException;
antarmuka RmiServerIntf publik meluas jauh {
public String getMessage () throws RemoteException;}
kelas RmiClient - ini adalah klien yang mendapat referensi (proxy) ke objek hidup jauh di server dan memanggil metode untuk mendapatkan pesan. Jika objek server diimplementasikan java.io.Serializable bukan java.rmi.Remote, itu akan menjadi serial dan diteruskan ke klien sebagai nilai. [2]
impor java.rmi.Naming;
public class RmiClient {
public static void main (String args []) throws Exception {
RmiServerIntf obj = (RmiServerIntf) Naming.lookup ( "// localhost / RmiServer");
System.out.println (obj.getMessage ());
}}
Sebelum menjalankan contoh ini, kita perlu membuat 'rintisan' file untuk antarmuka kami digunakan. Untuk tugas ini kita memiliki RMI compiler - 'rmic'
Catatan: kita membuat file stub dari '* .class' file dengan pelaksanaan remote interface, bukan dari '* .java' file.
rmic RmiServer
Perhatikan bahwa sejak versi 5.0 dari dukungan J2SE untuk file stub secara dinamis telah ditambahkan, dan rmic hanya disediakan untuk kompatibilitas mundur dengan runtimes sebelumnya, [3] atau untuk program yang tidak memberikan nomor port eksplisit (atau nol) saat mengekspor objek remote, yang diperlukan untuk Rintisan dihasilkan menjadi mungkin, seperti yang dijelaskan dalam Javadoc untuk UnicastRemoteObject. Lihat komentar di konstruktor di atas.Referensi
Taylor, Ian J. Dari P2P untuk Layanan Web dan Grids - Peers dalam Client / Server Dunia. Springer, 2005
Dapatkan pintar dengan proxy dan RMI - JavaWorld
"Java RMI Release Notes". Peramal. Diperoleh Mei 9, 2012.
link eksternal
"Remote Method Invocation Depan". Oracle Technology Network untuk Pengembang Java. Redwood Shores, CA, USA: Oracle Corporation. Diperoleh 2014/07/14.
Java RMI tutorial - titik awal yang baik untuk belajar RMI. Juga memeriksa Hello World di RMI
Java RMI pelatihan online - Sangat baik untuk pelatihan JavaRMI dan sebagai acuan
RMI halaman dalam dokumen JDK
java.rmi (Sun Java API Referensi untuk paket RMI)
Wollrath, Ann; Riggs, Roger; Waldo, Jim. "Sebuah Model Terdistribusi Obyek untuk Sistem Java" (PDF). Diperoleh 2009/02/11.
Pemrograman WebLogic RMI - pengantar RMI di Oracle Weblogic.
Umum Remote Method Invocation
Categories:
platform Java
Panggilan prosedur jauh