Kai Freikorps Kai Tracid Kai Winding

buy CD Albireon download music Apparat download albums After The Eulogy albums download 2 Preciious, Lee Aaron Arthur Cordewener A Beautiful Machine Absolum online tracks Audioholics Alio Die and Zeit A Beautiful Machine Absolum buy albums Animal Collective (feat. Vashti Bunyan) download music Artento Divini online music AZ-Rotator buy tracks Alfven, Hugo buy Arizona Dream A Beautiful Machine albums buy Alexi Delano buy albums Andy Moor Annie Haslam A Beautiful Machine Absolum download CD 2Pac - Makaveli and Dillinger Accept A Beautiful Machine Absolum online albums Agresion buy CD Apparat Amsterdam Klezmer Band A Beautiful Machine Absolum online CD Acid Rain buy Anugama and Sebastiano A Beautiful Machine buy music A Split Second albums download Apocalypse download Asrai A Beautiful Machine download mp3 2 Preciious, Lee Aaron online mp3 Adam Freeland online CD A-Ha buy tracks 4 Strings and Tina Cousins buy CD Artie Shaw online CD AZ download music Amauta and Rijchary buy music ASC feat Intex Systems buy tracks Arruga, Lombardo and Friends buy music Ashen Light download Aidan Baker vs. Cymbl A Beautiful Machine albums buy Angels and Airwaves download Astrid Williamson A Beautiful Machine Akwid and Jae-P A Beautiful Machine Absolum online CD Alejandro Sanz buy tracks Aly and Fila buy tracks Alex Sword and John Chevalier online mp3 Abazagorath albums download Arthur Alexander download albums Anchors for Arms download CD Anuradha Paudwal, Sanjeev Ab.. albums download Altiplano De Chile download tracks Acron online albums Auberon buy mp3 A New Age In Relaxation online mp3 Avail albums download Angelo Badalamenti download Alan Menken A Beautiful Machine buy tracks Arcane online tracks Alternative Control online Agatus A Beautiful Machine download CD Adham Shaikh download music 68 Beats download music Alan Sorrenti buy CD Arj Snoek download Aidan Baker A Beautiful Machine download CD Akira Takasaki buy music Anathema online mp3 Alla Zagaykevych online Altus and Silvercord A Beautiful Machine download mp3 Arnold Schoenberg and Anton Webern buy mp3 Alexander online Aes Dana A Beautiful Machine download mp3 5Ive's Continuum Research Project buy mp3 Alastair Galbraith buy albums A Javelin Reign buy music Arzu buy mp3 Ahmed Sahin download tracks Apache Indian download CD Alex Parsons and Tommy Four Seven Aalto A Beautiful Machine Absolum

August 16th, 2007

java.rmi.NoSuchObjectException

Posted by frank in Java

Heute erreichte mich die Exception java.rmi.NoSuchObjectException mit der Meldung “No such object in table”. Diese Meldung habe ich zuerst nicht ganz verstanden, denn der Client hat ja zuvor über Lookup das Objekt erfolgreich geholt. Dennoch trat anschließend bei der Verwendung diese Meldung auf.
Das Problem ist jedoch so einfach wie zugleich auch etwas versteckt. Bei einem Lookup des Clients erfolgt dies auf die RMI-Registry. Diese hält die Stubs bereit und bei einem Lookup erhält der Client Informationen wie er zum eigentlichen Remote-Objekt gelangt. Der Lookup war also kein Problem. Bei der ersten Verwendung des erhaltenen Objektes wird nun eine Verbindung zum RMI-Server aufgebaut und dann das Remote-Objekt verwendet. Dies war jetzt nicht mehr da und damit kam es zu dieser Meldung. Aber warum war es nicht mehr da? Ganz einfach: Der Garbage Collector hatte es aus dem Speicher entfernt.
Die Lösung ist daher, dass die Instanz, die beim Erzeugen des UniCastRemoteObjects verwendet wird, mit gehalten werden muß, damit diese nicht vom GC entfernt wird.

August 15th, 2007

RMI Server im NAT-Netzwerk betreiben

Posted by frank in Java

RMI ist ja das Werkzeug schlechthin um verschiedene Javaprozesse miteinander kommunizieren zu lassen. Es können damit entfernte Methoden aufgerufen (Remote Method Invocation) werden, als wäre die Klasse lokal verfügbar. Da sich Java selbst um die ganze Kommunikation über TCP kümmert, hat man natürlich wenig Einflussmöglichkeiten. Betreibt man nun einen RMI-Server hinter einem NAT-Router und möchte diesen vom Internet aus zugreifbar machen, so wird einem immer wieder auf Clientseite eine Exception um die Ohren fliegen, die sagt dass das Netzwerk mit z.B. der IP 192.168.x.x nicht verfügbar wäre. Grund hierfür ist, dass der RMI-Server seine lokale IP nach außen sendet und nicht seine globale IP. Abhilfe schafft hier der Start der Applikation mit einem Parameter:

java -Djava.rmi.server.hostname=GLOBALEIP ...

Ab jetzt sendet der Server die globale IP als Hostnamen und ein Zugriff von Außerhalb ist problemlos möglich.