PDF de programación - Java RMI - las RPC de Java. Parte I

Imágen de pdf Java RMI - las RPC de Java. Parte I

Java RMI - las RPC de Java. Parte Igráfica de visualizaciones

Publicado el 27 de Febrero del 2017
1.048 visualizaciones desde el 27 de Febrero del 2017
266,2 KB
37 paginas
Creado hace 18a (21/03/2006)
Java RMI

las RPC de Java. Parte I

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y Programación

Universidad Complutense de Madrid

21 de marzo de 2006

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

RMI y RPC

RPC: Remote Procedure Call.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

RMI y RPC

RPC: Remote Procedure Call.

RMI: Remote Method Invocation.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

RMI y RPC

RPC: Remote Procedure Call.

RMI: Remote Method Invocation.

Llamada a métodos (procedimientos, funciones) que están en otra
máquina abstracta,

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

RMI y RPC

RPC: Remote Procedure Call.

RMI: Remote Method Invocation.

Llamada a métodos (procedimientos, funciones) que están en otra
máquina abstracta,

de la misma máquina,

de una máquina remota.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Definición de objetos remotos

El cliente y el servidor deben conocer un interfaz común. El
cliente sólo conoce el interfaz.

El servidor debe implementar el interfaz java.rmi.Remote.

p a c k a g e

e j e m p l o s R M I . hebras ;

import java . rmi . Remote ;
import java . rmi . R e m o t e E x c e p t i o n ;

public i n t e r f a c e P r u e b a 1 e x t e n d s Remote {

public int mete ( String s ) throws R e m o t e E x c e p t i o n , I n t e r r u p t e d E x c e p t i o n ;
public int saca ()

throws R e m o t e E x c e p t i o n ;

}

1
2
3
4
5
6
7
8
9

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Servidor

p a c k a g e

e j e m p l o s R M I . hebras ;

import java . rmi . server . U n i c a s t R e m o t e O b j e c t ;
import java . rmi . R e m o t e E x c e p t i o n ;
import java . rmi . R M I S e c u r i t y M a n a g e r ;
import java . rmi . Naming ;

public class P r u e b a 1 I m p l e x t e n d s U n i c a s t R e m o t e O b j e c t i m p l e m e n t s P r u e b a 1 {

p r i v a t e int h a n E n t r a d o ;
public s y n c h r o n i z e d int

mete ( String s )

throws R e m o t e E x c e p t i o n , I n t e r r u p t e d E x c e p t i o n {
h a n E n t r a d o ++;
System . out . p r i n t l n ( " E n t r a n d o : " + s + " : " + " han e n t r a d o : " + h a n E n t r a d o );
wait ();
System . out . p r i n t l n ( " S a l i e n d o : " + s + " : " + " hay dentro : " + h a n E n t r a d o );
return h a n E n t r a d o ;

}

public s y n c h r o n i z e d int

saca ()

throws R e m o t e E x c e p t i o n {

System . out . p r i n t l n ( " s a c a n d o ... " );
notify ();
return h a n E n t r a d o ;

}
public P r u e b a 1 I m p l () throws R e m o t e E x c e p t i o n {

h a n E n t r a d o = 0;

}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Cliente I

Problema: El cliente sólo conoce un interfaz.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Cliente II

Problema: El cliente sólo conoce un interfaz.¿Cómo construye un
objeto al cual invocar?

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Cliente III

Problema: El cliente sólo conoce un interfaz.¿Cómo construye un
objeto al cual invocar?

1 Debe buscar un servidor

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Cliente IV

Problema: El cliente sólo conoce un interfaz.¿Cómo construye un
objeto al cual invocar?

1 Debe buscar un servidor y dentro del servidor un nombre:

rmi://127.0.0.1/prueba1.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Cliente V

Problema: El cliente sólo conoce un interfaz.¿Cómo construye un
objeto al cual invocar?

1 Debe buscar un servidor y dentro del servidor un nombre:

rmi://127.0.0.1/prueba1.

2 En el servidor debe darle el objeto.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Cliente VI

Problema: El cliente sólo conoce un interfaz.¿Cómo construye un
objeto al cual invocar?

1 Debe buscar un servidor y dentro del servidor un nombre:

rmi://127.0.0.1/prueba1.

2 En el servidor debe darle el objeto. Fichero Stub.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Cliente VII

p a c k a g e

e j e m p l o s R M I . hebras ;

import java . rmi . N o t B o u n d E x c e p t i o n ;
import java . rmi . R e m o t e E x c e p t i o n ;
import java . rmi . Naming ;
import java . net . M a l f o r m e d U R L E x c e p t i o n ;
public class C l i e n t e 1 {

public static void main ( String args []) throws N o t B o u n d E x c e p t i o n ,

M a l f o r m e d U R L E x c e p t i o n ,
R e m o t e E x c e p t i o n ,
I n t e r r u p t e d E x c e p t i o n {

String url = args [0];
String yo = args [1];
System . out . p r i n t l n ( " B u s c a n d o " + url + " ... " );
P r u e b a 1 pr = ( P r u e b a 1 ) Naming . lookup ( url );
int n = pr . mete ( yo );
System . out . p r i n t l n ( " Han pasado : " + n );

}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Cuestiones técnicas

Poner en marcha un servidor, registar un servicio.

Localizar la máquina y llamar al servicio.

En el servidor hay que arrancar el registro

# !/ b i n / sh
. ./ comun . sh
r m i r e g i s t r y &
echo $ ! >> $ P I D F I L E

1
2
3
4

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Registrar el servidor

public static void main ( String [] args ) {

String nombre = args [0];

if ( System . g e t S e c u r i t y M a n a g e r () == null ) {

System . s e t S e c u r i t y M a n a g e r ( new R M I S e c u r i t y M a n a g e r ());

}
try {

P r u e b a 1 s e r v i d o r = new P r u e b a 1 I m p l ();
Naming . rebind ( nombre , s e r v i d o r );
System . out . p r i n t l n ( " S e r v i d o r " + nombre + " f u n c i o n a n d o " );

} catch ( E x c e p t i o n e ) {

System . err . p r i n t l n ( "ó E x c e p c i n en " + nombre + " : " + e . g e t M e s s a g e ());
e . p r i n t S t a c k T r a c e ();

}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Arrancando todo I

Parte comun

# !/ b i n / sh
c o n t r o l A c c e s o = " - Djava . s e c u r i t y . policy =./ s e r v i d o r . policy "
JAVA = " java $ c o n t r o l A c c e s o "
url = " rmi :// l o c a l h o s t / p r u e b a 1 "
export C L A S S P A T H =~/ Java / c l a s s e s
P I D F I L E = pids

Servidor

# !/ b i n / sh
. ./ comun . sh
$JAVA e j e m p l o s R M I . hebras . P r u e b a 1 I m p l $url &
echo $ ! >> $ P I D F I L E

Para finalizar...

# !/ b i n / sh
. ./ comun . sh
kill -9 ‘ cat $PIDFILE ‘
rm $ P I D F I L E

1
2
3
4
5
6

1
2
3
4

1
2
3
4

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Arrancando todo II

Política de seguridad

grant c o d e b a s e " file :/ home / luis / Java / c l a s s e s / - " {

p e r m i s s i o n java . net . S o c k e t P e r m i s s i o n " *:1024 -65535 " , " connect , accept , r e s o l v e " ;
p e r m i s s i o n java . net . S o c k e t P e r m i s s i o n " *:80 " , " c o n n e c t " ;

};

Clientes

# !/ b i n / sh
. ./ comun . sh
$JAVA e j e m p l o s R M I . hebras . C l i e n t e S a c a 1 $url
$JAVA e j e m p l o s R M I . hebras . C l i e n t e S a c a 1 $url
$JAVA e j e m p l o s R M I . hebras . C l i e n t e S a c a 1 $url
$JAVA e j e m p l o s R M I . hebras . C l i e n t e S a c a 1 $url

# !/ b i n / sh
. ./ comun . sh
$JAVA e j e m p l o s R M I . hebras . C l i e n t e 1 $url A
$JAVA e j e m p l o s R M I . hebras . C l i e n t e 1 $url B
$JAVA e j e m p l o s R M I . hebras . C l i e n t e 1 $url C
$JAVA e j e m p l o s R M I . hebras . C l i e n t e 1 $url D

1
2
3
4

1
2
3
4
5
6

1
2
3
4
5
6

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Arrancando todo III

p a c k a g e

e j e m p l o s R M I . hebras ;

import java . rmi . N o t B o u n d E x c e p t i o n ;
import java . rmi . R e m o t e E x c e p t i o n ;
import java . rmi . Naming ;
import java . net . M a l f o r m e d U R L E x c e p t i o n ;
public class C l i e n t e S a c a 1 {

public static void main ( String args [])

throws N o t B o u n d E x c e p t i o n , M a l f o r m e d U R L E x c e p t i o n ,

R e m o t e E x c e p t i o n , I n t e r r u p t e d E x c e p t i o n {

String url = args [0];
P r u e b a 1 pr = ( P r u e b a 1 ) Naming . lookup ( url );
int n = pr . saca ();
System . out . p r i n t l n ( " Han e n t r a d o : " + n );

}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI

Ficheros Stub

El cliente necesita el objeto remoto, sucedáneo el fichero Stub.

Usage : rmic < options > < class names >

where < options > i n c l u
  • Links de descarga
http://lwp-l.com/pdf2475

Comentarios de: Java RMI - las RPC de Java. Parte I (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad