April 3rd, 2006

Multicast mit Java

Posted by frank in Linux, Java, J2EE

Heute wollte ich einen JBoss-Cluster aufbauen und dies erwies sich mal wieder schwieriger als ursprünglich gedacht. Die Installation von JBoss verläuft ja mit dem Installer recht einfach und auch so sind die Konfigurationen gar nicht schwer. Die zwei MACs hier hatten sich auch wunderbar schnell gefunden, jedoch wollten Systeme mit dem Betriebssystem Linux nicht so ganz.
Zu allererst hatten diese Systeme die anderen Rechner nicht per Multicast gesehen und machten einen eigenen Clusterbereich auf. Der Grund dafür ist, dass unter Linux mit Java ein kleines Problem besteht. Es wird also die Multicast-Adresse automatisch an das Loopback-Device gebunden. Wie in dem Bugreport beschrieben ist dies durch Modifikation der Datei /etc/hosts ohne Probleme möglich.
Bei mir sieht diese nun so aus:


127.0.0.1 localhost.localdomain localhost
192.168.2.206 ubuntu

Damit war ein Einstieg in den Cluster ohne Probleme möglich.
Jetzt gab es unter JBoss 4.0.3 SP1 noch einen Fehler:

WARN  [org.jboss.ha.jndi.HANamingService] Failed to start AutomaticDiscovery

java.net.SocketException: bad argument for IP_MULTICAST_IF: address not bound to any interface
        at java.net.PlainDatagramSocketImpl.socketSetOption(Native Method)
        at java.net.PlainDatagramSocketImpl.setOption(PlainDatagramSocketImpl.java:260)
        at java.net.MulticastSocket.setInterface(MulticastSocket.java:418)
        at org.jboss.ha.jndi.HANamingService$AutomaticDiscovery.start(HANamingService.java:476)
        at org.jboss.ha.jndi.HANamingService.startService(HANamingService.java:261)

Dieser Fehler trat sowohl unter Linux als auch unter MacOS X auf. Das Problem hier: IPv6 im Kernel
Wie im JBoss Forum beschrieben gibt es jedoch auch dafür eine einfache Lösung. Mit dem Switch “-Djava.net.preferIPv4Stack=true” kann man Java zur vorwiegenden Nutzung von IPv4 zwingen. Es muss also lediglich im JBoss in der Datei bin/run.conf folgende Zeile am Ende eingetragen werden:


JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"

Danach sollte dem Clusterbetrieb erstmal nichts mehr im Wege stehen.

One Response to ' Multicast mit Java '

Subscribe to comments with RSS or TrackBack to ' Multicast mit Java '.


  1. on März 23rd, 2007 at 12:54 pm

    JBoss starten und konfigurieren…

    JBoss starten Vor dem Start muß JAVAHOME auf ein JDK verweisen. JBoss kann einfach aus dem bin Verzeichnis mit run.bat oder run.sh gestartet werden. EJB´s werden in server/default/deploy kopiert und dadurch hot deployed…….

Leave a reply

:mrgreen: :neutral: :twisted: :shock: :smile: :???: :cool: :evil: :grin: :oops: :razz: :roll: :wink: :cry: :eek: :lol: :mad: :sad: