creato rmi counter. verifica blanda di errori di input

This commit is contained in:
2014-11-17 00:46:26 +01:00
parent bc03a1f378
commit f17671da1c
11 changed files with 259 additions and 8 deletions

View File

@@ -0,0 +1,15 @@
package rmi_counter;
import java.rmi.Remote;
import java.rmi.RemoteException;
/**
* Created by Giovanni on 16/11/2014.
*/
public interface CounterInterface extends Remote{
int getvalue (String from) throws RemoteException;
int sum (String from, int value) throws RemoteException;
}

View File

@@ -0,0 +1,64 @@
package rmi_counter;
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;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.logging.Logger;
/**
* Created by Giovanni on 16/11/2014.
*/
public class LaunchClient {
private static Logger l =Logger.getLogger("counterclientlogger");
public static void main (String args[]) {
try {
CounterInterface rc = (CounterInterface) Naming.lookup("rmi://localhost/Counter");
BufferedReader i = new BufferedReader(new InputStreamReader(System.in));
while (true) {
l.info("Commands:current,sum <value>,any other to quit");
String command = LaunchClient.cmd(i);
l.info(command);
if (command.equals("current")) {
l.info(rc.getvalue("Client1") + "");
} else if ( command.length()>=3 && command.substring(0,3).equals("sum")) {
int value = Integer.parseInt(command.substring(4));
l.info(String.valueOf(rc.sum( "Client1",value )));
} else {
l.info("quitting");
break;
}
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
}
public static String cmd (BufferedReader i ){
try {
String input = i.readLine();
return input;
} catch (IOException e) {
}
return "";
}
}

View File

@@ -0,0 +1,63 @@
package rmi_counter;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.logging.Logger;
/**
* Created by Giovanni on 16/11/2014.
*/
public class LaunchServer {
private static Logger l =Logger.getLogger("counterlogger");
public static void main (String args[]) {
try {
RemoteCounter rc = new RemoteCounter(0);
Registry r = LocateRegistry.getRegistry();
l.info("Trying to bind");
r.rebind("Counter",rc);
l.info("Binded");
BufferedReader i = new BufferedReader(new InputStreamReader(System.in));
while (true) {
l.info("Commands:status,accesses,any other to quit");
String command = LaunchServer.cmd(i);
l.info(command);
if (command.equals("status")) {
l.info(rc.getlocalvalue() + "");
} else if (command.equals("accesses")) {
l.info(rc.getaccesses());
} else {
l.info("quitting");
break;
}
}
} catch (RemoteException e) {
e.printStackTrace();
}
}
public static String cmd (BufferedReader i ){
try {
String input = i.readLine();
return input;
} catch (IOException e) {
}
return "";
}
}

View File

@@ -0,0 +1,26 @@
package rmi_counter;
import java.rmi.registry.LocateRegistry;
/**
* Created by Giovanni on 16/11/2014.
*/
public class LocalCounter {
public LocalCounter(int in){
value=in;
}
public int increment(){
return (value++);
}
public int getlocalvalue(){
return value;
}
private int value;
}

View File

@@ -0,0 +1,45 @@
package rmi_counter;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Enumeration;
import java.util.Vector;
import java.util.logging.Logger;
/**
* Created by Giovanni on 16/11/2014.
*/
public class RemoteCounter extends LocalCounter implements CounterInterface {
private static Logger l = Logger.getLogger("RemoteCounter");
public RemoteCounter( int in) throws RemoteException{
super(in);
UnicastRemoteObject.exportObject(this,5000);
accesses = new Vector<String>();
}
@Override
public synchronized int getvalue(String from) throws RemoteException {
accesses.add("Access from " + from + " value " + getlocalvalue());
return getlocalvalue();
}
@Override
public synchronized int sum(String from, int value) throws RemoteException {
accesses.add("Access from " + from + " value to add " + value);
for (int i = 0;i < value ;i++)
increment();
return getlocalvalue();
}
public String getaccesses (){
String returned = "";
for (Enumeration<String> e = accesses.elements(); e.hasMoreElements() ;)
returned+="\n" + e.nextElement();
return returned;
}
Vector<String> accesses;
}

View File

@@ -15,8 +15,7 @@ public class HelloWorldImpl extends UnicastRemoteObject implements HelloWorldInt
}
@Override
public String stampa(String in) throws RemoteException {
System.out.print(in);
return in;
public String stampa() throws RemoteException {
return "HelloWorld";
}
}

View File

@@ -9,6 +9,6 @@ import java.rmi.RemoteException;
public interface HelloWorldInterface extends Remote {
String stampa (String in) throws RemoteException;
String stampa () throws RemoteException;
}

View File

@@ -0,0 +1,39 @@
package rmi_hello_world;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.logging.Logger;
/**
* Created by Giovanni on 16/11/2014.
*/
public class LaunchClient {
private static final Logger l = Logger.getLogger("Client");
public static void main (String[] arg) {
try {
l.info("Cercando l'oggetto remoto");
HelloWorldInterface o = (HelloWorldInterface) Naming.lookup("rmi://localhost/HW");
l.info("Found");
l.info(o.stampa());
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}

View File

@@ -10,19 +10,19 @@ import java.util.logging.Logger;
/**
* Created by Giovanni on 09/11/2014.
*/
public class Launch {
public class LaunchServer {
public static void main (String[] arg){
Logger l =Logger.getLogger("hellowordlogger");
System.setSecurityManager(new RMISecurityManager());
System.setSecurityManager(new SecurityManager());
try {
Registry registry = LocateRegistry.createRegistry(10000);
Registry registry = LocateRegistry.getRegistry();
HelloWorldImpl obj = new HelloWorldImpl();
l.info("Creato oggetto");
registry.bind("HW",obj);
registry.rebind("HW", obj);
l.info("Oggetto registrato");

Binary file not shown.

Binary file not shown.