There are two related problems I have noticed:
* If you have a machine with two network interfaces (lately a large number of motherboards have started to come with dual network ports), JmDNS' default factory method may pick the wrong one.
* Even if you only have one physical network interfaces, installing VMware can often result in the same symptom.
The current workaround for this is to create one JmDNS per interface, and manage all of them -- when you need to publish a ServiceInfo you need to publish it on all of them, and what happens if two of them are actually on the same network? Presumably hell breaks loose, although I am yet to find out.
Unfortunately this workaround is not very simple, as ServiceInfo does contain the IP address so you actually wind up adding multiple independent ServiceInfo records to advertise the existence of a single host.
It would be nice if JmDNS itself would provide the built-in ability to listen on multiple interfaces, or at the very least multiple IP addresses, such that we can pass in a list of NetworkInterface or a list of InetAddress, and have it Do The Right Thing [TM]. Ideally it would also need to support adding and removing interfaces at run-time, as realistically the state of the network does change at runtime.