求高人帮我看看这个文件那里出错了
我在SERVLET引用的时候总是提示找不到下面的CLASS,CLASSPATH设置的没问题
package me.prett.service;
import java.lang.management.ManagementFactory;
import java.net.URL;
import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
import org.apache.log4j.xml.DOMConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
enum JmxMonitor {
INSTANCE;
private final Logger log = LoggerFactory.getLogger(JmxMonitor.class);
private MBeanServer mbs;
private ClientMonitor ClientMonitor;
private JmxMonitor() {
ClientMonitor ClientMonitor = new ClientMonitor();
mbs = ManagementFactory.getPlatformMBeanServer();
this.ClientMonitor = ClientMonitor;
try {
registerMonitor("me.prett.service", "wuyu",
ClientMonitor);
} catch (MalformedObjectNameException e) {
log.error("Unable to register JMX monitor", e);
} catch (InstanceAlreadyExistsException e) {
log.error("Unable to register JMX monitor", e);
} catch (MBeanRegistrationException e) {
log.error("Unable to register JMX monitor", e);
} catch (NotCompliantMBeanException e) {
log.error("Unable to register JMX monitor", e);
}
}
public static JmxMonitor getInstance() {
return INSTANCE;
}
public void addPool(ClientPool pool) {
ClientMonitor.addPool(pool);
}
public void registerMonitor(String name, String monitorType, Object monitoringInterface)
throws MalformedObjectNameException, InstanceAlreadyExistsException,
MBeanRegistrationException, NotCompliantMBeanException {
String monitorName = generateMonitorName(name, monitorType);
log.info("Registering JMX {}", monitorName);
ObjectName oName = new ObjectName(monitorName);
if (mbs.isRegistered(oName)) {
log.info("Monitor already registered: {}", oName);
return;
}
mbs.registerMBean(monitoringInterface, oName);
registerPerf4J();
}
private void registerPerf4J() {
URL url = getClass().getClassLoader().getResource("hectorLog4j.xml");
if (url == null) {
log.error("Unable to locate hectorLog4j.xml; performance counters will not be exported");
} else {
DOMConfigurator.configure(url);
}
}
private String generateMonitorName(String className, String monitorType) {
StringBuilder sb = new StringBuilder();
sb.append(className);
sb.append(":ServiceType=");
// append the classloader name so we have unique names in web apps.
sb.append(getUniqueClassloaderIdentifier());
if (null != monitorType && monitorType.length() > 0) {
sb.append(",MonitorType=" + monitorType);
}
return sb.toString();
}
private String getUniqueClassloaderIdentifier() {
String contextPath = getContextPath();
if (contextPath != null) {
return contextPath;
}
return "hector";
}
private String getContextPath() {
URL url = getClass().getClassLoader().getResource("/");
if (url != null) {
String[] elements = url.toString().split("/");
for (int i = elements.length - 1; i > 0; --i) {
// URLs look like this: file:/.../ImageServer/WEB-INF/classes/
// And we want that part that's just before WEB-INF
if ("WEB-INF".equals(elements[i])) {
return elements[i - 1];
}
}
}
return null;
}
public ClientMonitor getMonitor() {
return ClientMonitor;
}
}