Hi
wir haben in der Schule gerade mit dem Thema RMI begonnen. Nun schreibe ich gerade die erste Hausübung mit RMI, jedoch bekomme ich immer beim Aufruf des Client Programmes eine Exception. Ich durchsuche jetzt schon seit 5 Stunden das Internet und hab noch immer keine passende Lösung gefunden -.-
Hier der Code der Klassen am RMI Server: (Ich weiß, manche Namen wurden etwas unglücklich gewählt
)
DBZugriff.java :
DBZugriffMethoden :
PizzaServiceRegisterMethods :
Die Klasse beim Client Programm:
Als erstes führe ich in der Konsole (im bin Verzeichniss des Servers) den Befehl "rmic -keep -d . -v1.2 DBZugriff" aus.
Danach starte ich im selben verzeichniss die rmiregistry mit "start rmiregistry" und für die PizzaServiceRegister Klasse aus...
Als letztes hab ich dann die GUI Klasse beim Client Programm ausgeführt.
Beim letzten Punkt bekomm ich dann immer die gleiche Exception:
Da unser Lehrer dieses Thema nur sehr schlecht erklärt hat, habe ich noch ziemlich wenig Ahnung von RMI...
Ich hoffe mal, dass mir jemand von euch helfen kann...
Schon mal danke im Vorraus
Lg K0n
wir haben in der Schule gerade mit dem Thema RMI begonnen. Nun schreibe ich gerade die erste Hausübung mit RMI, jedoch bekomme ich immer beim Aufruf des Client Programmes eine Exception. Ich durchsuche jetzt schon seit 5 Stunden das Internet und hab noch immer keine passende Lösung gefunden -.-
Hier der Code der Klassen am RMI Server: (Ich weiß, manche Namen wurden etwas unglücklich gewählt

DBZugriff.java :
Code:
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBZugriff extends UnicastRemoteObject implements DBZugriffMethoden{
public DBZugriff() throws RemoteException{
}
private Connection verbindung;
public Connection connection() throws RemoteException{
return verbindung;
}
public boolean getConnection() throws RemoteException{
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException e) {
System.out.println("Treiber nicht gefunden!");
System.exit(1);
}
try {
verbindung = DriverManager.getConnection(
"jdbc:postgresql://localhost:5432/Pizzaservice",
"postgres", "admin");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
}
DBZugriffMethoden :
Code:
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.sql.Connection;
public interface DBZugriffMethoden extends Remote{
public Connection connection() throws RemoteException;
public boolean getConnection() throws RemoteException;
}
PizzaServiceRegisterMethods :
Code:
import java.rmi.Naming;
public class PizzaServiceRegisterMethods {
public static void main(String args[]){
try {
DBZugriff acct;
String name = "DBZugriff";
acct = new DBZugriff();
Naming.rebind(name, acct);
System.out.println("Objekte registriert");
} catch (Exception e) {
System.err.println("Ausnahme:" + e.getMessage());
// e.printStackTrace();
}
}
}
Die Klasse beim Client Programm:
Code:
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
public class GUI {
public static void main(String args[]) {
try {
DBZugriff verbindung;
verbindung = (DBZugriff) Naming.lookup("rmi://localhost/DBZugriff");
verbindung.getConnection();
Als erstes führe ich in der Konsole (im bin Verzeichniss des Servers) den Befehl "rmic -keep -d . -v1.2 DBZugriff" aus.
Danach starte ich im selben verzeichniss die rmiregistry mit "start rmiregistry" und für die PizzaServiceRegister Klasse aus...
Als letztes hab ich dann die GUI Klasse beim Client Programm ausgeführt.
Beim letzten Punkt bekomm ich dann immer die gleiche Exception:
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: DBZugriff_Stub (no security manager: RMI class loader disabled)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:84)
at GUI.main(GUI.java:20)
Caused by: java.lang.ClassNotFoundException: DBZugriff_Stub (no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:375)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197)
at java.ibjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
at java.ibjectInputStream.readClassDesc(ObjectInputStream.java:1496)
at java.ibjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
at java.ibjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.ibjectInputStream.readObject(ObjectInputStream.java:351)
... 3 more
Da unser Lehrer dieses Thema nur sehr schlecht erklärt hat, habe ich noch ziemlich wenig Ahnung von RMI...
Ich hoffe mal, dass mir jemand von euch helfen kann...
Schon mal danke im Vorraus

Lg K0n