Diferencia entre revisiones de «Java Remote Method Invocation»

Contenido eliminado Contenido añadido
Sin resumen de edición
Sin resumen de edición
Línea 20:
RMI como extensión de Java, es una tecnología de programación, fue diseñada para resolver problemas escribiendo y organizando código ejecutable. Así RMI constituye un punto específico en el espacio de las tecnologías de programación junto con C, C++, Smalltalk, etc.
 
La principal diferencia de utilizar RPC o RMI, es que RMI es un mecanismo para invocación remota de procedmientosprocedimientos basado en el lenguaje de programación Java que soporta interacción entre objetos, mientras que RPC no soporta esta característica.
 
== Arquitectura ==
Línea 53:
 
<source lang="java">
public interface MiInterfazRemota extends java.rmi.Remote
{
public intvoid miMetodo2miMetodo1() throws java.rmi.RemoteException;
 
public voidint miMetodo1miMetodo2() throws java.rmi.RemoteException;
 
public int miMetodo2() throws java.rmi.RemoteException;
}
</source>
Línea 63 ⟶ 62:
* Implementar la interfaz remota
<source lang="java">
public class MiClaseRemota
extends java.rmi.server.UnicastRemoteObject
implements MiInterfazRemota
{
public int miMetodo2MiClaseRemota() throws java.rmi.RemoteException {
{
// Código del constructor
}
public void miMetodo1() throws java.rmi.RemoteException
{
// Aquí ponemos el código que queramos
System.out.println("Estoy en miMetodo1()");
}
 
public int public MiClaseRemotamiMetodo2() throws java.rmi.RemoteException {
{
// Código del constructor
return 5; // Aquí ponemos el código que queramos
}
}
 
public void miMetodo1otroMetodo() throws java.rmi.RemoteException {
{
// Aquí ponemos el código que queramos
// Si definimos otro método, éste no podría llamarse
System.out.println("Estoy en miMetodo1()");
// remotamente al no ser de la interfaz remota
}
}
 
public int miMetodo2() throws java.rmi.RemoteException {
public static void main(String[] args) {
return 5; // Aquí ponemos el código que queramos
{
}
try
 
{
public void otroMetodo() {
MiInterfazRemota mir = new MiClaseRemota();
// Si definimos otro método, éste no podría llamarse
java.rmi.Naming.rebind("//" + java.net.InetAddress.getLocalHost().getHostAddress() +
// remotamente al no ser de la interfaz remota
+ ":" + args[0] + "/PruebaRMI", mir);
}
}
 
} catch (Exception e) {
public static void main(String[] args) {
try {
}
MiInterfazRemota mir = new MiClaseRemota();
}
java.rmi.Naming.rebind("//" + java.net.InetAddress.getLocalHost().getHostAddress()
+ ":" + args[0] + "/PruebaRMI", mir);
} catch (Exception e) {
}
}
}
</source>
Línea 129 ⟶ 136:
La siguiente clase obtiene un objeto de tipo MiInterfazRemota, implementado en nuestro servidor:
<source lang="java">
public class MiClienteRMI
{
 
private MiClienteRMI(){}; {
}
 
public static void main(String[] args) {
{
try {
try
MiInterfazRemota mir = (MiInterfazRemota) java.rmi.Naming.lookup("//"
}{
+ args[0] + ":" + args[1] + "/PruebaRMI");
MiInterfazRemota mir = (MiInterfazRemota) java.rmi.Naming.lookup("//" +
 
+ args[0] + ":" + args[1] + "/PruebaRMI");
// Imprimimos miMetodo1() tantas veces como devuelva miMetodo2()
}
for (int i = 1; i <= mir.miMetodo2(); i++) {
// Imprimimos miMetodo1() tantas veces como devuelva miMetodo2()
mir.miMetodo1();
for (int i = 1; i <= mir.miMetodo2(); i++) {
}
} catch mir.miMetodo1(Exception e) {;
}
e.printStackTrace();
catch (Exception }e)
}{
e.printStackTrace();
}
}
}
</source>