RMI - Probleme beim Starten des Clients

Status
Nicht offen für weitere Antworten.

TheNose

Mitglied
Hallo!

Ich arbeite mich zur Zeit in RMI ein. Habe ein Beispielprogramm geschrieben. Der Server startet ohne Probleme, allerdings fliegt der Client immer mit einer Exception weg. Aber jetzt erstmal der Reihe nach:

Mein Interface sieht so aus:
Code:
package de.hft_stuttgart.verteiltesysteme.ostereier.server;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface RemoteInterface extends Remote { 

	public int suchen(int id, int feldnummer) throws RemoteException;
	
	public int getLength() throws RemoteException;
public int getId() throws RemoteException;

}

Meine Serverklasse so:
Code:
package de.hft_stuttgart.verteiltesysteme.ostereier.server;


import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.Vector;


public class Server extends UnicastRemoteObject implements RemoteInterface {


	private static final long serialVersionUID = -2679964088057799575L;
	
	private Vector<Integer> feld;
	private Vector<Integer> clients;
	
	
	public Server() throws RemoteException {
		super();
	}
	
	public static void main(String args[]) {
		if (System.getSecurityManager() == null) {
		    System.setSecurityManager(new SecurityManager());
		}
		
		try { 
			   LocateRegistry.createRegistry( Registry.REGISTRY_PORT    );
			  
			  
			  
			} 
			catch ( RemoteException e )  {  }
		
		System.out.println("sadsad");
		try {
			Server serv = new Server();
			Naming.rebind("//localhost:1099/Server", serv);
		
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public int getLength() throws RemoteException {
		return feld.size();
	}

	public int suchen(int id, int feldnummer) throws RemoteException {
		try {
			this.wait(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if (feld.get(feldnummer) == 1) {
			clients.set(id, clients.get(id) + 1);
			return 1;
		}
		else {
			return 0;
		}
		
	}

	public int getId() throws RemoteException {
		clients.add(clients.size() +1);
		return clients.size();
	}	

}

Und meine Client-Klasse so:
Code:
package de.hft_stuttgart.verteiltesysteme.ostereier.client;

/**
 * 
 */


import java.rmi.Naming;

/**
 * @author andreas
 *
 */
public class Client {
	
	public static void main(String[] args) {
		if (System.getSecurityManager() == null) {
		    System.setSecurityManager(new SecurityManager());
		}
		
		try {
			RemoteInterface suchen = (RemoteInterface) Naming.lookup("Server");
			System.out.println("Client-Id: " + suchen.getId());
			System.out.println("Feldgröße: " + suchen.getLength());
			
		} catch ( Exception e) {
			e.printStackTrace();
		}
	}

}

Ich arbeite unter Linux. Den Server starte ich wie folgt:
Code:
java -cp /home/andreas/Desktop/server.jar -Djava.security.policy=/home/andreas/Desktop/policy.all de.hft_stuttgart.verteiltesysteme.ostereier.server.Server

Funktioniert einwandfrei. Auch rmiregistery wird mitgestartet.

Dann rufe ich den Client wie folgt auf:
Code:
java -cp /home/andreas/Desktop/client.jar -Djava.security.policy=/home/andreas/Desktop/policy.all de.hft_stuttgart.verteiltesysteme.ostereier.client.Client

Jetzt bekomme ich folgende Fehlermeldung:
Code:
java -cp /home/andreas/Desktop/client.jar -Djava.security.policy=/home/andreas/Desktop/policy.all de.hft_stuttgart.verteiltesysteme.ostereier.client.Client
java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
        java.lang.ClassNotFoundException: de.hft_stuttgart.verteiltesysteme.ostereier.server.RemoteInterface
        at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
        at java.rmi.Naming.lookup(Naming.java:84)
        at de.hft_stuttgart.verteiltesysteme.ostereier.client.Client.main(Client.java:22)
Caused by: java.lang.ClassNotFoundException: de.hft_stuttgart.verteiltesysteme.ostereier.server.RemoteInterface
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:247)
        at sun.rmi.server.LoaderHandler.loadProxyInterfaces(LoaderHandler.java:711)
        at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:655)
        at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:592)
        at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:628)
        at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294)
        at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:238)
        at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1531)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1493)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        ... 3 more

Verstehe leider nicht warum. Eine Policy gebe ich doch an. Die Datei sieht so aus:
Code:
// this policy file should only be used for testing and not deployed
grant {
    permission java.security.AllPermission;
};

Kann mir jemand weiterhelfen? Bin auch über kleine Tipps dankbar. Bisher hat mir weder Google noch dieses Forum weiterhelfen können. Auch wenn dieses Problem in ähnlicher Form wohl schon öfter aufgetaucht ist.
 
W

Wastl

Gast
leg mal beim Client auch das Package de.hft_stuttgart.verteiltesysteme.ostereier.server an und leg dort das RemoteInterface rein und sag Bescheid ob das funktioniert.
 
W

Wastl

Gast
zu deinem ersten Problem nochmal. Das Remote Object muss ja wissen welche Methoden zur Verfügung stehen, daher muss das Interface auch beim Client vorhanden sein. Ob man das Interface nicht auch per RMI anfordern kann weiss ich nicht.

zu deinem zweiten Problem: ja man kann die policy fest eincodieren, eine Datei braucht man allerdings immer noch. du kannst dir lediglich sparen, die Policy datei als Startargument anzugeben. Einfach folgende Zeile in den Server einfügen:
Code:
System.setProperty("java.security.policy", "PolicyDatei");
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Probleme beim Klassen-Import von sun.misc. ... Netzwerkprogrammierung 19
B Probleme beim ersten Netzwerkprogramm Netzwerkprogrammierung 3
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
S Probleme beim Beschränken der Geschwindigkeit Netzwerkprogrammierung 6
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
K Probleme bei HTML-Mail-Abruf mit IMAP bei 1und1 Netzwerkprogrammierung 2
L Socket SSLServer Probleme Netzwerkprogrammierung 0
H Probleme mit UDP Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
R Probleme mit JMS Netzwerkprogrammierung 1
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
M Probleme mit FTP Netzwerkprogrammierung 19
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
Maxim6394 Probleme bei Messenger Netzwerkprogrammierung 16
I Socket UDP Hole Punching bereitet Probleme Netzwerkprogrammierung 14
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
R FTPS - Probleme mit FTPSClient Netzwerkprogrammierung 2
S Probleme mit XMLEncoder/XMLDecoder Netzwerkprogrammierung 2
D Server - Client Probleme Netzwerkprogrammierung 9
Weiti HTTP Zertifikat-Probleme - InstallCert.java Netzwerkprogrammierung 2
M Socket Probleme mit einfacher Socketverbindung Netzwerkprogrammierung 3
H Probleme mit GUI (RMI) Netzwerkprogrammierung 6
T RMI Probleme mit RMI-Server Netzwerkprogrammierung 4
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
T FTP Probleme mit Passiv und Binary Mode Netzwerkprogrammierung 3
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
S Socket SocketServer und Client machen Probleme Netzwerkprogrammierung 6
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
F RMI probleme Netzwerkprogrammierung 3
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
E jPcap Probleme Netzwerkprogrammierung 3
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
T Probleme mit Jpcap Netzwerkprogrammierung 18
P Probleme mit OutputStream Netzwerkprogrammierung 7
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
L Probleme bei Chatserver Netzwerkprogrammierung 6
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
G Probleme mit SecruityManager + RMI Netzwerkprogrammierung 10
derMartin Probleme mit NNTP Client Netzwerkprogrammierung 2
A Probleme mit Citrix Netzwerkprogrammierung 17
A Probleme mit kleinem Messenger-Programm Netzwerkprogrammierung 4
K RXTXcomm : Install - Probleme Netzwerkprogrammierung 7
R Probleme mit UDP Netzwerkprogrammierung 4
P Probleme bei Chat programm Netzwerkprogrammierung 2
I Probleme mit 'JSSE Samples' von Sun Netzwerkprogrammierung 5
E InetAddress Klasse-Probleme Netzwerkprogrammierung 4
M dateien übertragen, probleme mit versch. Strömen? Netzwerkprogrammierung 4
R Rechte Probleme bei Applets Netzwerkprogrammierung 16
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
F WLAN Probleme (CLIENT-SERVER) Netzwerkprogrammierung 4
J Probleme mit ObjectOutputStream! Netzwerkprogrammierung 15
G Fragen/Probleme mit JavaMail Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
C Probleme bei Dateiupload mit socket Netzwerkprogrammierung 4
T FTP Chatprogramm probleme Netzwerkprogrammierung 2
C RMI Probleme mit iptables Netzwerkprogrammierung 2
D socket exception + timing probleme Netzwerkprogrammierung 2
G Probleme bei Proxy-Server! Netzwerkprogrammierung 5
S Probleme mit HttpURLConnection Netzwerkprogrammierung 10
D Habe 2 Probleme: Input eingabe und Multi Socket Server Netzwerkprogrammierung 2
OnDemand Json Objekt leeres Array beim lesen Netzwerkprogrammierung 9
T Brauche Hilfe beim GET-String für HttpURLConnection Netzwerkprogrammierung 4
A sporadischer Fehler beim Schreiben auf NAS Netzwerkprogrammierung 2
A Automatisches Update beim Starten Netzwerkprogrammierung 1
J Hilfe beim programmiern einer App zur Anmeldung im Wlan-Netzwerk Netzwerkprogrammierung 0
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
M Nur die erste Nachricht kommt beim Server an Netzwerkprogrammierung 11
M jsf-seite beim hinzufügen einer csv-datei in einen ordner aktualiseren Netzwerkprogrammierung 0
R Problem beim Programmieren eines Chatprogramms Netzwerkprogrammierung 5
S Umstellung AS400 auf Postgre - Problem beim Arbeiten mit Metadaten Netzwerkprogrammierung 2
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
G Socket NIO2 Problem mit AsynchronousSocketChannel beim Schließen Netzwerkprogrammierung 3
D RMI Problem beim shutdown von verteilter CORBA-Anwendung Netzwerkprogrammierung 6
S Socket Verschiedene Exceptions beim Übertragen von Bildern über Socket Netzwerkprogrammierung 20
C ObjectInputReader wirft beim zweiten Aufruf eine Exception Netzwerkprogrammierung 3
Y RMI Initialisierung beim Server Netzwerkprogrammierung 10
B Socket Aufhängen beim Lesen Netzwerkprogrammierung 4
M Problem beim Datenempfang Netzwerkprogrammierung 2
DEvent Keine IOException beim schreiben Socket Netzwerkprogrammierung 3
M Authentifizierung beim Start von Java-Applets Netzwerkprogrammierung 2
N NIO Problem beim speziellen Behandeln von einzelnen Benutzern Netzwerkprogrammierung 13
E HTTP Problem beim Auslesen von Websiten Netzwerkprogrammierung 6
G Kryptische Zeichen beim Auslesen einer Website Netzwerkprogrammierung 11
Y Problem mit ObjectInputStream beim lesen vom Socket Netzwerkprogrammierung 10
T ServerSocket bleibt beim lesen von Input hängen Netzwerkprogrammierung 2
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben