_ 3.3.3 RMI callbacks Uppgiften belyser hur man använder callbacks med RMI. __ Uppgift Gör om RMI-programmen i uppgifterna [3.3.1 RMI på klientsidan, 05_ass/ip1/3.3.1.txt] och [3.3.2 RMI på serversidan, 05_ass/ip1/3.3.2.txt] så att de använder callbacks. När en RMI-klient ansluter eller avlsutar sin uppkoppling till RMI-servern så ska RMI-servern informera alla anslutna klienter om vilka klienter som är anslutna och RMI-klienten ska skriva ut denna information i kommandofönstret. __ Exempel Hämta filerna: - §[RemoteClient.class, 05_ass/ip1/3/3.3.3/client/RemoteClient.class]§ - §[Client.class, 05_ass/ip1/3/3.3.3/client/Client.class]§ - §[ClientGUI.class, 05_ass/ip1/3/3.3.3/client/ClientGUI.class]§ - §[ClientGUI$L.class, 05_ass/ip1/3/3.3.3/client/ClientGUI$L.class]§ - §[RemoteServer.class, 05_ass/ip1/3/3.3.3/client/RemoteServer.class]§ - §[Server_Stub.class, 05_ass/ip1/3/3.3.3/client/Server_Stub.class]§ Kör igång RMI-klientprogrammet med: - §java Client atlas.dsv.su.se§ I detta program kan man även trycka på §e§-knappen för att avsluta programmet. Eftersom detta program enbart fungerar på datorer med direkt anslutning till Internet (det fungerar inte bakom routrar som ger klienterna egna interna IP-adresser) så kan man även testa det lokalt på den egna datorn om man först startar upp RMI-servern. Hämta filerna: - §[RemoteServer.class, 05_ass/ip1/3/3.3.3/server/RemoteServer.class]§ - §[Server.class, 05_ass/ip1/3/3.3.3/server/Server.class]§ - §[Server$Ball.class, 05_ass/ip1/3/3.3.3/server/Server$Ball.class]§ - §[Server$ClientSender.class, 05_ass/ip1/3/3.3.3/server/Server$ClientSender.class]§ - §[RemoteClient.class, 05_ass/ip1/3/3.3.3/server/RemoteClient.class]§ - §[Client_Stub.class, 05_ass/ip1/3/3.3.3/server/Client_Stub.class]§ Kör igång RMI-serverprogrammet med: - §java Server run_local§ Kör igång RMI-klientprogrammet med: - §java Client localhost§ Bygg gärna en version som fungerar bättre än denna. __ Tips Man bör börja med ett minimalt exempel innan man bygger hela denna uppgift. Exempelvis så kan man börja med att låta RMI-servern anropa en metod hos RMI-klienten med en §String§ som argument som sen RMI-klienten skriver ut i kommandofönstret. I exemplet ovan har följande två interface använts: - §[RemoteServer.java, 05_ass/ip1/3/3.3.3/server/RemoteServer.java]§ - §[RemoteClient.java, 05_ass/ip1/3/3.3.3/client/RemoteClient.java]§ __ Hjälp ~ 05_ass/help/01.txt > [Klicka här för hjälp, helper.dsv@gmail.com, Prog Internet: 3.3.3 RMI callbacks: http://people.dsv.su.se/~pierre/i/i.cgi?href=05_ass/ip1/3.3.3.txt] ½===system_tutoring_message===½ < ~ 05_ass/help/02.txt