RMI RMI Probleme zwischen Client und Server

Markus138

Mitglied
Hallo,

ich versuche gerade das erste mal mit RMI zu arbeiten und habe mir zu diesem Zweck einige kurze Tutorials angesehen (u.a. auch das Tutorial von Galileo Computing :: Java 7 - Mehr als eine Insel - index auf dem mein Beispiel basiert.

Was ich eigentlich machen möchte ist, dass ich von meinem GUI Projekt auf das BL Projekt Daten übergebe. Dazu habe ich testweise im GUI Projekt in meiner Klasse CustomerGUIProxy folgendes (basierend eben auf dem Openbook) erstellt: (der code mit Adder macht für meinen Einsatzzweck zwar noch keinen Sinn, aber das werde ich wenn alles funktioniert dann ändern)

Java:
public CustomerBean saveElement(CustomerBean element) {
		try {
			LocateRegistry.createRegistry(Registry.REGISTRY_PORT);

			AdderImpl adder = new AdderImpl();
			Adder stub = (Adder) UnicastRemoteObject.exportObject(adder, 0);
			RemoteServer.setLog(System.out);

			Registry registry = LocateRegistry.getRegistry();
			registry.rebind("Adder", stub);

			System.out.println("Adder angemeldet");
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return element;
	}

Das Interface Adder und die Implementierung AdderImpl sind im Projekt erstellt. Die Impl selbst ist wenig spannend und bietet nur die eine Methode:

Java:
public int add(int x, int y) {
		return x + y;
	}

Im BL Projekt ist ebenfalls das Interface Adder definiert und in der Klasse CustomerBLProxy ist folgendes implementiert:

Java:
public CustomerBLProxy() {
		try {
			Registry registry = LocateRegistry.getRegistry();
			Adder adder = (Adder) registry.lookup("Adder");
			System.out.println(adder.add(47, 11));
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (NotBoundException e) {
			e.printStackTrace();
		}
	}

Wenn ich die Projekte jetzt über meinen Tomcat starte und über das GUI Projekt die Methode
Code:
saveElement(CustomerBean element)
aufrufe wird diese zwar ohne Fehler abgearbeitet, ein Zugriff auf das BL Projekt findet jedoch nicht statt. Laut meinem Verständnis wüsste ich auch derzeit nicht wie das funktionieren sollte..
Leider habe ich bisher nur Code Beispiele gefunden wo sich Client und Server im selben Package und nicht in ganz verschiedenen Projekten befinden.

Könnte mir vielleicht jemand einen Denkanstoß liefern wie ich eine Verbindung zwischen GUI und BL Projekt erstelle?

Vielen Dank!
 
T

tuxedo

Gast
Könnte mir vielleicht jemand einen Denkanstoß liefern wie ich eine Verbindung zwischen GUI und BL Projekt erstelle?

So auf Anhieb seh ich beim überfliegen mal keinen groben Fehler. Außer dass du im BL Projekt eine Registry verwendest, statt einen Lookup zu machen.

Typischerweise macht ein Client das hier:

Java:
ServerInterface server = (ServerInterface)Naming.lookup(url);

wobei url ein String in form von "rmi://<host>:<port>/<remotename>" ist.

<host> = Hostname oder IP auf dem Server Server läuft und lauscht
<port> = In deinem Fall der RMi Standardport 1099 bzw. Registry.REGISTRY_PORT
<remotename> = In deinem Fall "Adder", eben so wie du es im Server beim Aufruf von "bind()" angegeben hast. Ist AFAIK CaseSensitive.

- Alex
 

Markus138

Mitglied
Danke für die Info!

ich habe den Code in der Klasse CustomerBLProxy jetzt so umgebaut:

Java:
public class CustomerBLProxy {

	public CustomerBLProxy() {
		try {
			Adder adder = null;
			try {
				adder = (Adder) Naming.lookup("rmi://localhost:8080/Adder");
			} catch (MalformedURLException e) {
				e.printStackTrace();
			}
			System.out.println(adder.add(47, 11));
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (NotBoundException e) {
			e.printStackTrace();
		}
	}
}

Wenn ich die saveElement Methode im GUI Proxy starte wird diese ohne Probleme ausgeführt, aber weiters passiert nichts. Meine Frage ist jetzt jedoch: Wie schaffe ich es, dass der CustomerBLProxy Konstruktor auch aufgerufen wird?
 
T

tuxedo

Gast
?? Konstrukturen rufen sich für gewöhnlich nicht "einfach so aus heiterem Himmel heraus auf". Das musst du selbst machen. Hat nix mit Netzwerk oder RMI zu tun --> irgendwo in deinem Client-Programmcode:
Code:
new CustomerBLProxy();

Mit deinem
Code:
saveElement()
Aufruf startest du ja nur den "Server"... Der alleine macht aber nix. Musst halt schon noch einen Client starten.
 

Markus138

Mitglied
da bin ich leider wieder bei dem Problem das ich zu Beginn schon mal hatte. Wenn ich im BL Projekt in der Klasse WicketApplication (Einsprungspunkt des BL Projektes) ein new CustomerBLProxy(); aufrufe erhalte ich nur folgende Exception:

Java:
chwerwiegend: Exception starting filter wicket.bl
java.lang.IllegalArgumentException: Argument 'requestCycle' may not be null.
	at org.apache.wicket.util.lang.Args.notNull(Args.java:41)
	at org.apache.wicket.Application.fetchCreateAndSetSession(Application.java:1552)
	at org.apache.wicket.Session.get(Session.java:152)
	at org.apache.wicket.Application$1.onInstantiation(Application.java:283)
	at org.apache.wicket.application.ComponentInstantiationListenerCollection$1.notify(ComponentInstantiationListenerCollection.java:38)
	at org.apache.wicket.application.ComponentInstantiationListenerCollection$1.notify(ComponentInstantiationListenerCollection.java:34)
	at org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80)
	at org.apache.wicket.application.ComponentInstantiationListenerCollection.onInstantiation(ComponentInstantiationListenerCollection.java:33)
	at org.apache.wicket.Component.<init>(Component.java:683)
	at org.apache.wicket.MarkupContainer.<init>(MarkupContainer.java:120)
	at org.apache.wicket.Page.<init>(Page.java:172)
	at org.apache.wicket.Page.<init>(Page.java:136)
	at org.apache.wicket.markup.html.WebPage.<init>(WebPage.java:76)
	at at.core.customer.CustomerBLProxy.<init>(CustomerBLProxy.java:14)

Ich denke, das ich bei dem RMI Problem derzeit gänzlich falsch liege, kann jedoch im Internet kein brauchbares Tutorial zu dem Thema finden.
 
T

tuxedo

Gast
Mir scheint du hast kein RMI Problem, sondern hast leider kein Plan wie du CustomerBLProxy richtig einsetzt. Ich kann dir da leider auch nicht weiterhelfen, denn ich kenne das org.apache.wicket Framework nicht. Am besten dort mal nachschlagen/nachfragen wie, wo und wann eine Klasse dieser Art instanziiert wird...

- Alex
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
A Probleme beim Klassen-Import von sun.misc. ... Netzwerkprogrammierung 19
B Probleme beim ersten Netzwerkprogramm Netzwerkprogrammierung 3
M Probleme mit FTP Netzwerkprogrammierung 19
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
Maxim6394 Probleme bei Messenger Netzwerkprogrammierung 16
I Socket UDP Hole Punching bereitet Probleme Netzwerkprogrammierung 14
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
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
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
L Probleme bei Chatserver Netzwerkprogrammierung 6
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
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
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
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
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
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
S Probleme beim Beschränken der Geschwindigkeit Netzwerkprogrammierung 6
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
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
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
M Socket Netzwerk Übertragung zwischen 4 Clients Netzwerkprogrammierung 2
J VideoStreaming zwischen 2 Geräten Netzwerkprogrammierung 1
R Kommunikation zwischen Shell und Putty Netzwerkprogrammierung 5
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
S Bluetooth Verbindung zwischen Android app und Raspberry Pi 3 Netzwerkprogrammierung 1
M Verbindung zwischen zwei Pc in dem Selben Netzwerk Netzwerkprogrammierung 8
O Client zwischen XML und JSON auswählen lassen Netzwerkprogrammierung 2
F Verbindung zwischen Server und handy Netzwerkprogrammierung 1
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
D Chatprogramm zwischen zwei ChatClients (aktiv/passiv) Netzwerkprogrammierung 1
J Direkter Datenaustausch zwischen Servern Netzwerkprogrammierung 5
V Unterschied zwischen cURL und HttpURLConnection?? Netzwerkprogrammierung 2
N Datenaustausch zwischen Java-GUI und PHP-Programm über SOAP Netzwerkprogrammierung 19
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
V Datensätze zwischen verschiedenen Datenbanken kopieren Netzwerkprogrammierung 2
F Peer to Peer Verbindung zwischen mehreren Clients? Netzwerkprogrammierung 8
G Verbindung zwischen PC und Handy Netzwerkprogrammierung 10
K Datenaustausch zwischen Applet und JSP Netzwerkprogrammierung 4
C Verbindung zwischen 2 Computern herstellen Netzwerkprogrammierung 12
M Kommunikation zwischen ServerSocket und Socket Netzwerkprogrammierung 2
L RMI-Objekt zwischen zwei RMI-Servern kopieren Netzwerkprogrammierung 2
J Socketverbindung zwischen Javaclient und C-Server Netzwerkprogrammierung 11
R Kommunikationsproblem zwischen JAVA-client und C-Server Netzwerkprogrammierung 5
B Verbindung zwischen Client und Server Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben