Archiv der Kategorie ‘Entwicklung’

Client exception: java.rmi.ConnectException: Connection refused to host: 127.0.0.1


Gerade mal wieder etwas mit RMI gemacht.

An frühere Probleme habe ich mich sogar noch erinnert.

Und auch der gesamte Ablauf (Stub/Skeleton, Registry, Building) war klar, so dass ich ihn sogar ohne Eclipse Plugin für RMI (habe ich leider erst hinterher gefunden – NetBeans konnte das mal von Haus aus, irgendwann) implementieren konnte.

Alles ging ratz-fatz und ich war wirklich zufrieden. Bis mich beim Deployment (Ubuntu-Server / Windows-Clients) die Realität eingeholt hat:

Client exception: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection refused

Tausend ähnliche Diskussionen gibt es zu dem Thema. Die meisten hatten wohl eine falsche /ect/hosts (Beispiel-Problem hier, ggf. einzelne Einträge anlegen!), vergessen, dem Server zu sagen auf welcher IP er da eigentlich bereits (!) lauscht (java.rmi.server.hostname) oder oder oder…

Alles Fehlanzeige. Ich habe alles richtig gemacht. Nach einer knappen Stunde wusste ich, dass die Verbindung zwischen Client und Server nicht mit unterschiedlichen (Sun vs. GCJ – Gnu Compiler for Java) JREs funktioniert.

Vielleicht könnte das noch in die FAQ…


java.​awt.​Container.add() … validate()!


java.​awt.​Container:

public Component add(Component comp)
Appends the specified component to the end of this container. This is a convenience method for Container.addImpl.

Note: If a component has been added to a container that has been displayed, validate must be called on that container to display the new component. If multiple components are being added, you can improve efficiency by calling validate only once, after all the components have been added.


JComboBox liefert gleichen Index für gleiche Werte


Wenn einer jComboBox zwei oder mehr gleiche Strings hinzugefügt werden, wird eine Referenz auf das selbe String-Objekt zurückgeliefert (Hintergrund: Optimierung der nur-lesbaren String-Objekte, vgl. StringBuffer). In dem Standard-ListModel der ComboBox steht dadurch zweimal das gleiche Objekt und das Model liefert (aufgrund des Vergleichs über eine Schleife) den gleichen Index für beide Strings zurück.

Lösung:

jComboBox.add(makeNewStrObj("value"));

private Object makeNewStrObj(final String strVal) {
return new Object() { public String toString() { return strVal; } };
}