提交 d82b8571 编写于 作者: K kohsuke

added a DNS-multicast discovery support.

git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@31053 71c3de6d-444a-0410-be80-ed276b4c234a
上级 d995cea4
......@@ -700,6 +700,11 @@ THE SOFTWARE.
<artifactId>wstx-asl</artifactId>
<version>3.2.7</version>
</dependency>
<dependency>
<groupId>org.jvnet.hudson</groupId>
<artifactId>jmdns</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>com.sun.winsw</groupId>
<artifactId>winsw</artifactId>
......
package hudson;
import hudson.model.Hudson;
import javax.jmdns.JmDNS;
import javax.jmdns.ServiceInfo;
import java.io.Closeable;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Registers a DNS multi-cast service-discovery support.
*
* @author Kohsuke Kawaguchi
*/
public class DNSMultiCast implements Closeable {
private JmDNS jmdns;
public DNSMultiCast(Hudson hudson) {
try {
this.jmdns = JmDNS.create();
Map<String,String> props = new HashMap<String, String>();
props.put("url",hudson.getRootUrl());
props.put("version",Hudson.getVersion().toString());
TcpSlaveAgentListener tal = hudson.getTcpSlaveAgentListener();
if (tal!=null)
props.put("slave-port",String.valueOf(tal.getPort()));
jmdns.registerService(ServiceInfo.create("_hudson._tcp.local.","hudson",
80,0,0,props));
} catch (IOException e) {
LOGGER.log(Level.WARNING,"Failed to advertise the service to DNS multi-cast",e);
}
}
public void close() {
jmdns.close();
}
private static final Logger LOGGER = Logger.getLogger(DNSMultiCast.class.getName());
}
......@@ -26,6 +26,7 @@ package hudson.model;
import com.thoughtworks.xstream.XStream;
import hudson.BulkChange;
import hudson.DNSMultiCast;
import hudson.DescriptorExtensionList;
import hudson.Extension;
import hudson.ExtensionList;
......@@ -422,6 +423,8 @@ public final class Hudson extends Node implements ItemGroup<TopLevelItem>, Stapl
private transient UDPBroadcastThread udpBroadcastThread;
private transient DNSMultiCast dnsMultiCast;
/**
* List of registered {@link ItemListener}s.
* @deprecated as of 1.286
......@@ -622,6 +625,7 @@ public final class Hudson extends Node implements ItemGroup<TopLevelItem>, Stapl
udpBroadcastThread = new UDPBroadcastThread(this);
udpBroadcastThread.start();
dnsMultiCast = new DNSMultiCast(this);
updateComputerList();
......@@ -2198,6 +2202,8 @@ public final class Hudson extends Node implements ItemGroup<TopLevelItem>, Stapl
}
if(udpBroadcastThread!=null)
udpBroadcastThread.shutdown();
if(dnsMultiCast!=null)
dnsMultiCast.close();
ExternalJob.reloadThread.interrupt();
Trigger.timer.cancel();
// TODO: how to wait for the completion of the last job?
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册