From 1ef220724569856bc42a1427b557d52c77a1d180 Mon Sep 17 00:00:00 2001 From: Giovanni Di Grezia Date: Mon, 1 Dec 2014 02:03:48 +0100 Subject: [PATCH] small changes to factory and implemented rmi awareness with a simple register/deregister program --- rmi_Awareness/Client.java | 18 ++++++ rmi_Awareness/HelloImplemented.java | 44 +++++++++++++++ rmi_Awareness/HelloInterface.java | 13 +++++ rmi_Awareness/LaunchClient.java | 55 +++++++++++++++++++ rmi_Awareness/LaunchServer.java | 28 ++++++++++ rmi_Awareness/call_me_back.java | 15 +++++ rmi_Awareness/register_to_server.java | 13 +++++ .../HelloImplementedFr.java | 2 +- .../HelloImplementedIt.java | 2 +- .../ServerFactoryImplemented.java | 2 + 10 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 rmi_Awareness/Client.java create mode 100644 rmi_Awareness/HelloImplemented.java create mode 100644 rmi_Awareness/HelloInterface.java create mode 100644 rmi_Awareness/LaunchClient.java create mode 100644 rmi_Awareness/LaunchServer.java create mode 100644 rmi_Awareness/call_me_back.java create mode 100644 rmi_Awareness/register_to_server.java diff --git a/rmi_Awareness/Client.java b/rmi_Awareness/Client.java new file mode 100644 index 0000000..097282e --- /dev/null +++ b/rmi_Awareness/Client.java @@ -0,0 +1,18 @@ +package rmi_Awareness; + +import java.rmi.RemoteException; +import java.rmi.server.UnicastRemoteObject; + +/** + * Created by Giovanni on 01/12/2014. + */ +public class Client extends UnicastRemoteObject implements call_me_back { + + public Client() throws RemoteException { + } + + @Override + public void notify(String in) throws RemoteException { + System.out.println(in); + } +} diff --git a/rmi_Awareness/HelloImplemented.java b/rmi_Awareness/HelloImplemented.java new file mode 100644 index 0000000..95db181 --- /dev/null +++ b/rmi_Awareness/HelloImplemented.java @@ -0,0 +1,44 @@ +package rmi_Awareness; + +import java.rmi.RemoteException; +import java.rmi.server.UnicastRemoteObject; +import java.util.Iterator; +import java.util.Vector; + +/** + * Created by Giovanni on 01/12/2014. + */ +public class HelloImplemented extends UnicastRemoteObject implements HelloInterface, register_to_server { + + public HelloImplemented () throws RemoteException{ + v = new Vector(); + } + + @Override + public String sayhello() throws RemoteException { + return "HI!"; + } + + @Override + public void register(call_me_back obj) throws RemoteException { + v.add(obj); + Iterator it = v.iterator(); + for (;it.hasNext();){ + it.next().notify("Un nuovo utente si e' registrato"); + } + + } + + @Override + public void deregister(call_me_back obj) throws RemoteException { + v.remove(obj); + Iterator it = v.iterator(); + for (;it.hasNext();){ + it.next().notify("Un utente si e' cancellato "); + } + + } + + private Vector v; + +} diff --git a/rmi_Awareness/HelloInterface.java b/rmi_Awareness/HelloInterface.java new file mode 100644 index 0000000..245878c --- /dev/null +++ b/rmi_Awareness/HelloInterface.java @@ -0,0 +1,13 @@ +package rmi_Awareness; + +import java.rmi.Remote; +import java.rmi.RemoteException; + +/** + * Created by Giovanni on 01/12/2014. + */ +public interface HelloInterface extends Remote { + + String sayhello() throws RemoteException; + +} diff --git a/rmi_Awareness/LaunchClient.java b/rmi_Awareness/LaunchClient.java new file mode 100644 index 0000000..8b84eef --- /dev/null +++ b/rmi_Awareness/LaunchClient.java @@ -0,0 +1,55 @@ +package rmi_Awareness; + +import java.io.BufferedInputStream; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.rmi.Naming; +import java.rmi.NotBoundException; +import java.rmi.RemoteException; + + +/** + * Created by Giovanni on 01/12/2014. + */ +public class LaunchClient { + + public static void main (String[] args) { + + BufferedReader i = new BufferedReader(new InputStreamReader(System.in)); + + register_to_server rs = null; + call_me_back client = null; + try { + client = new Client(); + Object server_object = (Object) Naming.lookup("rmi://localhost/HelloServer"); + rs = (register_to_server) server_object; + rs.register(client); + ((HelloInterface) server_object).sayhello(); + + System.out.println("Press enter to exit and deregister"); + i.readLine(); + + } catch (RemoteException e) { + e.printStackTrace(); + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (NotBoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + rs.deregister(client); + } catch (RemoteException e) { + e.printStackTrace(); + } + System.exit(0); + } + + + } + + +} diff --git a/rmi_Awareness/LaunchServer.java b/rmi_Awareness/LaunchServer.java new file mode 100644 index 0000000..2116dae --- /dev/null +++ b/rmi_Awareness/LaunchServer.java @@ -0,0 +1,28 @@ +package rmi_Awareness; + +import java.rmi.RemoteException; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; + +/** + * Created by Giovanni on 01/12/2014. + */ +public class LaunchServer { + + public static void main (String[] args){ + + try { + HelloInterface h = new HelloImplemented(); + Registry r = LocateRegistry.getRegistry(); + r.rebind("HelloServer",h); + + + + } catch (RemoteException e) { + e.printStackTrace(); + } + + + } + +} diff --git a/rmi_Awareness/call_me_back.java b/rmi_Awareness/call_me_back.java new file mode 100644 index 0000000..0d30482 --- /dev/null +++ b/rmi_Awareness/call_me_back.java @@ -0,0 +1,15 @@ +package rmi_Awareness; + + + +import java.rmi.Remote; +import java.rmi.RemoteException; + +/** + * Created by Giovanni on 01/12/2014. + */ +public interface call_me_back extends Remote{ + + void notify (String in) throws RemoteException; + +} diff --git a/rmi_Awareness/register_to_server.java b/rmi_Awareness/register_to_server.java new file mode 100644 index 0000000..30b38b0 --- /dev/null +++ b/rmi_Awareness/register_to_server.java @@ -0,0 +1,13 @@ +package rmi_Awareness; + +import java.rmi.Remote; +import java.rmi.RemoteException; + +/** + * Created by Giovanni on 01/12/2014. + */ +public interface register_to_server extends Remote { + + void register (call_me_back obj) throws RemoteException; + void deregister (call_me_back obj) throws RemoteException; +} diff --git a/rmi_hello_world_factory/HelloImplementedFr.java b/rmi_hello_world_factory/HelloImplementedFr.java index f5730dc..1bb2849 100644 --- a/rmi_hello_world_factory/HelloImplementedFr.java +++ b/rmi_hello_world_factory/HelloImplementedFr.java @@ -9,7 +9,7 @@ import java.rmi.server.UnicastRemoteObject; public class HelloImplementedFr extends UnicastRemoteObject implements Hello { - private static final long serialVersionUID = 2025591618699941247L; + private static final long serialVersionUID = 2025591618699941248L; public HelloImplementedFr(String in) throws RemoteException { nome=in; diff --git a/rmi_hello_world_factory/HelloImplementedIt.java b/rmi_hello_world_factory/HelloImplementedIt.java index 4dd01e1..56726a7 100644 --- a/rmi_hello_world_factory/HelloImplementedIt.java +++ b/rmi_hello_world_factory/HelloImplementedIt.java @@ -9,7 +9,7 @@ import java.rmi.server.UnicastRemoteObject; public class HelloImplementedIt extends UnicastRemoteObject implements Hello { - private static final long serialVersionUID = 2025591618699941247L; + private static final long serialVersionUID = 2025591618699941249L; public HelloImplementedIt(String in) throws RemoteException { nome=in; diff --git a/rmi_hello_world_factory/ServerFactoryImplemented.java b/rmi_hello_world_factory/ServerFactoryImplemented.java index 077a1f6..6834b6c 100644 --- a/rmi_hello_world_factory/ServerFactoryImplemented.java +++ b/rmi_hello_world_factory/ServerFactoryImplemented.java @@ -8,6 +8,8 @@ import java.rmi.server.UnicastRemoteObject; */ public class ServerFactoryImplemented extends UnicastRemoteObject implements ServerFactory { + private static final long serialVersionUID = 2025591618699941250L; + public ServerFactoryImplemented() throws RemoteException {