Introdução ! " " 1 Java Remote Method Invocation # $ % & " ! ' ()* + , Arquitetura de três camadas $ 2) 3.4 $ 2) 354 / . / - & - ()*+ 0 01, 2 Arquitetura do RMI 6 . (#! 7 ! ! 8 rmic HelloTime HelloTime_Stub.class HelloTime_Skel.class Arquitetura do RMI - & +((9 , ( : ; < " ! % & ; ) = = " ((9! < ! * ! > , 3 Arquitetura do RMI - % % 8 6 6 # ! 0 + " , 0 + 0()* ? @, 0 ! ! ! A%%# B Publicação e recuperação de objetos ( @ ) * + , @ @CDDE 66 9 66 ( @0 ( @+CDDE, # 4 Funcionamento Funcionamento 5 Stubs e Skeletons ; @ ! < Stubs e Skeletons: geração 6 Serialização Criação de um objeto remoto F0 - " G % H ! 0( 0 0 0 0( 8 01I A % * % +, < B ( @ A + ( 8 I , < B ( J 8 I K 7 Criação de um objeto remoto C0 8 * 0 0; ( ( # ! 8 L " Implementação do Objeto Remoto 0 0 01I 0 A A % 0; ( % ; +, < B ( % @ I +, < B ( 0 % ( 8 8 ) +,I A % *J JK J K @ A + B +M A , < B ( 8 'MN NM O O OA B J @ M ,I K K 8 Criação de um objeto remoto P0 * public static void main(String[] args) throws Exception { System.setSecurityManager(null); HelloTime ht = new HelloTime(); Naming.bind(“//XPTO/HelloTime", ht); //host:porta/id do registro System.out.println("Objeto HelloTime publicado"); } Criação de um objeto remoto Q0 A A E0 * S0 8 A % % % R R +000, 0 0 @ 9 Criação do cliente C0 G 8 P0 ; " F0 * & 0 0 - + 01I 0 , @ 01I A%J + @ 0 @ ) A % *<I < V +A % * ,W TU , < B 8 + B()* @ ) 0 +M 66 < J +,,I PDDD6A % M ,I K K Carregando classes dinamicamente ()* % java.rmi.server.codebaseV< O 66)@A 6)@G 6 @' -9. #.%A ' @ 10 Características do RMI 9 # $ " $ : 3G 4 9 %-#>* # Outras arquiteturas... (## < - (5. * G9 X : G- ) ? %-#>* # A%%# 0W8%( 8 ' " 11 Referências TFU3$ ( ) < * +()* ,A ) @ < 66 0 0 6 6 6 6 TCU 3$ ( ) < * ) @ '$ C 8F0Q0CG < 66 0 0 6 C 6F0Q0C6 6 6 6 # 4' ;W 4' ;W 6 % -0< TPU3. PC < 4' < 66BBB0 TQU3G@ < 66 0 - $ B - 8 B 0 B 0 '* 'CDDC 6$ * * 6 0< 6 C 6F0Q0C6 ()* 4' ;W 6 6 6 0< Y 12