Netbeans hat ein Collaboration Modul mit dem es möglich ist, innerhalb der Netbeans IDE mit anderen Usern zu chatten und zusammenzuarbeiten. Bisher wurde unter share.java.net auch ein Collaboration Server angeboten, doch der Dienst wird demnächst eingestellt. Die Alternative besteht darin, z.B. einen eigenen Openfire XMPP (Jabber) Server einzurichten, und diesen zu nutzen. Dazu gibt es auch hier eine Anleitung für einen Collaboration Server für Netbeans mit Openfire.

Openfire ist ja schnell eingerichtet, jedoch hatte ich das Problem, stets die Meldung zu bekommen: „object does not represent a valid jid“Leider ist im aktuellen Netbeans Collaboration Plugin auch die Möglichkeit, sich an einem Jabber Server zu registrieren entfernt worden.

Folgende Schritte haben bei mir geholfen, das Problem mit dem „object does not represent a valid jid“ zu lösen:

  1. Zum User gehörige JID mit Benutzernamen und E-Mail Adresse versehen
  2. Den Openfire Cache leeren bzw. Openfire neu starten

Außerdem sollte man darauf achten, dass die zugehörigen Domains (DNS) korrekt auflösen. ( search.$HOST, pubsub.$HOST und auch der groupchat etc.)

Jedoch besteht bei mir weiterhin das Problem, dass ich NPE Exceptions in Netbeans bekomme – ein Problem, dass offenbar schon lange bekannt ist. Doch auch ein Haufen Fehlermeldungen im Openfire lassen mich daran zweifeln, dass es wirklich am Netbeans liegt, sondern eher am Openfire. (Oder der Konfiguration.)

Dazu gesellen sich SQL Integrity Exceptions von Openfire, die sowohl bei der integrierten HSQLDB als auch MySQL auftauchen:

[org.jivesoftware.openfire.spi.PresenceManagerImpl.userUnavailable(PresenceManagerImpl.java:271)] Error storing offline presence of user: olli
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Duplicate entry 'olli' for key 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)

Vermutlich hängt es also an der Kombination aus Netbeans Collaboration und einem Problem von Openfire und dem MUC Chat. Das Problem ist auch seit 2006 bei IgniteRealtime im Issuetracker unter JM-921, doch ein Fix ist nicht in Sicht. (Interessanterweise ist auch hier im Report zu lesen, dass es durch Netbeans ausgelöst wird.)

Ich habe es somit leider nicht fertig gebracht, eine funktionierende Installation von Openfire und Netbeans zusammenzustellen.

Update: Dank der netten Hilfe von einem XMPP und Openfire Experten ist die Situation nun etwas besser analysiert. Erstmal: Niemals den Openfire Cache leeren. Danach sind die Dienste nicht mehr richtig announced und es passieren wunderliche Dinge. Aber: Der Login mit dem Netbeans Collaboration Plugin tut danach tatsächlich.
Das liegt daran, dass eben kein Groupchat mehr vom Openfire announced wird  – findet Netbeans nämlich einen, wird eine extrem merkwürdige XMPP Anfrage gesendet, auf die der Openfire (verständlicherweise) auch etwas reserviert antwortet.

Anschließend beendet Netbeans die Verbindung und meldet „object does not represent a valid jid“ Wenn ich etwas Zeit habe, werde ich mal schauen was da im Quellcode vermerkt ist, vielleicht ist das ja einfach zu beheben. Schade, dass Sun nicht die Smack XMPP Library verwendet, sondern etwas eigenes. (Ich nehme an, dass es zu den Zeiten als Netbeans Collaboration gestartet wurde, noch keine ausgereiften Java XMPP Libraries gab.)