Commit ced79630 authored by yihua.huang's avatar yihua.huang

specify jndi and jmx #98

parent 95d3802e
...@@ -5,11 +5,14 @@ import us.codecraft.webmagic.Spider; ...@@ -5,11 +5,14 @@ import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.example.GithubRepoPageProcessor; import us.codecraft.webmagic.processor.example.GithubRepoPageProcessor;
import us.codecraft.webmagic.processor.example.OschinaBlogPageProcessor; import us.codecraft.webmagic.processor.example.OschinaBlogPageProcessor;
import javax.management.*; import javax.management.JMException;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.remote.JMXConnectorServer; import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory; import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL; import javax.management.remote.JMXServiceURL;
import java.io.IOException; import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.rmi.registry.LocateRegistry; import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry; import java.rmi.registry.Registry;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -23,6 +26,7 @@ import java.util.concurrent.atomic.AtomicInteger; ...@@ -23,6 +26,7 @@ import java.util.concurrent.atomic.AtomicInteger;
*/ */
public class SpiderMonitor { public class SpiderMonitor {
public static final int RMI_PORT = 14721;
private List<SpiderStatusMBean> spiderStatuses = new ArrayList<SpiderStatusMBean>(); private List<SpiderStatusMBean> spiderStatuses = new ArrayList<SpiderStatusMBean>();
public List<SpiderStatusMBean> getSpiders() { public List<SpiderStatusMBean> getSpiders() {
...@@ -52,7 +56,7 @@ public class SpiderMonitor { ...@@ -52,7 +56,7 @@ public class SpiderMonitor {
return new SpiderStatus(spider, monitorSpiderListener); return new SpiderStatus(spider, monitorSpiderListener);
} }
public static SpiderMonitor create(){ public static SpiderMonitor create() {
return new SpiderMonitor(); return new SpiderMonitor();
} }
...@@ -89,31 +93,41 @@ public class SpiderMonitor { ...@@ -89,31 +93,41 @@ public class SpiderMonitor {
} }
public void jmxStart() throws IOException, JMException { public SpiderMonitor jndiStart(int port) throws IOException, JMException {
jmxStart(14721); Registry registry = LocateRegistry.createRegistry(port);
return this;
}
public SpiderMonitor jndiStart() throws IOException, JMException {
return jndiStart(RMI_PORT);
}
public SpiderMonitor jmxStart() throws IOException, JMException {
return jmxStart("localhost", RMI_PORT);
} }
public void jmxStart(int rmiPort) throws IOException, JMException { public SpiderMonitor jmxStart(String jndiServer, int rmiPort) throws IOException, JMException {
String jmxServerName = "WebMagic"; String jmxServerName = "WebMagic";
// jdkfolder/bin/rmiregistry.exe 9999
Registry registry = LocateRegistry.createRegistry(rmiPort);
MBeanServer mbs = MBeanServerFactory.createMBeanServer(jmxServerName); // start JNDI
//MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); MBeanServer localServer = ManagementFactory.getPlatformMBeanServer();
ObjectName objName; ObjectName objName;
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:" + rmiPort + "/" + jmxServerName); JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + jndiServer + ":" + rmiPort + "/" + jmxServerName);
System.out.println("JMXServiceURL: " + url.toString()); System.out.println("JMXServiceURL: " + url.toString());
JMXConnectorServer jmxConnServer = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs); System.out.println("Please replace localhost of your ip if you want to connect it in remote server.");
JMXConnectorServer jmxConnServer = JMXConnectorServerFactory.newJMXConnectorServer(url, null, localServer);
jmxConnServer.start(); jmxConnServer.start();
for (SpiderStatusMBean spiderStatus : spiderStatuses) { for (SpiderStatusMBean spiderStatus : spiderStatuses) {
objName = new ObjectName(jmxServerName + ":name=" + spiderStatus.getName()); objName = new ObjectName(jmxServerName + ":name=" + spiderStatus.getName());
mbs.registerMBean(spiderStatus, objName); localServer.registerMBean(spiderStatus, objName);
}
} }
return this;
}
public static void main(String[] args) throws JMException, public static void main(String[] args) throws JMException,
NullPointerException, NullPointerException,
...@@ -126,7 +140,7 @@ public class SpiderMonitor { ...@@ -126,7 +140,7 @@ public class SpiderMonitor {
SpiderMonitor spiderMonitor = new SpiderMonitor(); SpiderMonitor spiderMonitor = new SpiderMonitor();
spiderMonitor.register(oschinaSpider, githubSpider); spiderMonitor.register(oschinaSpider, githubSpider);
spiderMonitor.jmxStart(); spiderMonitor.jndiStart().jmxStart();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment