Hallo
Ich habe folgendes Problem. Eine fertige Anwendung soll netzwerkfähig gemacht werden. Doch seit RMI ist die Anwendung deutlich langsamer geworden. Es geht dabei nicht um die Datenübertragung übers Netz, sondern die Anwendung selber. Ich erzeuge eigentlich nur ein einziges Remoteobjekt, welches aber nicht mal benutzt wird. Trotzdem ist die Anwendung sehr langsam geworden. Kann es ein, dass RMI eine Anwendung bremst?
Hier die Methode, die den Server erzeugt:
Funktioniert auch alles...ich kann auch auf Methoden der Remote-Objekte zugreifen.
In der Anwendung wird der Server so erzeugt:
Nur alleine durch den Aufruf der Setup-Methode wird die komplette Anwendung extrem langsam. Erzeugen der Registry, zugreifen auf entfernte Objekte, alles funktioniert einwandfrei. Aber auch ohne irgendwelche Zugriffe ist die Anwendung deutlich langsamer geworden...Hoffentlich kann mir jemand helfen. Liegt es an RMI? Ist RMI überhaupt empfehlenswert, oder sollte RMI eigentlich eine Anwendung nicht verlangsamen?
Ich habe folgendes Problem. Eine fertige Anwendung soll netzwerkfähig gemacht werden. Doch seit RMI ist die Anwendung deutlich langsamer geworden. Es geht dabei nicht um die Datenübertragung übers Netz, sondern die Anwendung selber. Ich erzeuge eigentlich nur ein einziges Remoteobjekt, welches aber nicht mal benutzt wird. Trotzdem ist die Anwendung sehr langsam geworden. Kann es ein, dass RMI eine Anwendung bremst?
Hier die Methode, die den Server erzeugt:
Code:
public void setUp(String remoteNaming)
{
try
{
LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
}
catch (RemoteException e1)
{
e1.printStackTrace();
}
if (System.getSecurityManager() == null)
{
System.out.println("No security manager found. Initialise new one...");
URL policyFile = ClassLoader.getSystemResource("xxx/java.policy");
System.setProperty("java.security.policy", policyFile.toString());
System.setSecurityManager(new RMISecurityManager());
}
try
{
Server server = new ServerImpl();
UnicastRemoteObject.exportObject(server);
Naming.rebind(remoteNaming, server);
System.out.println("Server bound");
}
catch (Exception e)
{
System.err.println("Server exception: " + e.getMessage());
e.printStackTrace();
}
}
In der Anwendung wird der Server so erzeugt:
Code:
new Setup().setUp(SERVER_NAME);
Nur alleine durch den Aufruf der Setup-Methode wird die komplette Anwendung extrem langsam. Erzeugen der Registry, zugreifen auf entfernte Objekte, alles funktioniert einwandfrei. Aber auch ohne irgendwelche Zugriffe ist die Anwendung deutlich langsamer geworden...Hoffentlich kann mir jemand helfen. Liegt es an RMI? Ist RMI überhaupt empfehlenswert, oder sollte RMI eigentlich eine Anwendung nicht verlangsamen?