Interface default methods
June 24, 2014 Leave a comment
I am coding feverishly to complete a web interface to the JVM internals like memory, threads etc. This is my first set of default methods in an interface.
I have not read the JLS comparison between this and other inheritance mechanisms but this serves a purpose.
package com.memory.probe;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.AbstractQueue;
import java.util.concurrent.ArrayBlockingQueue;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import org.apache.log4j.Logger;
public interface Probe {
Logger l = Logger.getLogger("generation.gc");
AbstractQueue<Long> abq = new ArrayBlockingQueue<Long>(100);
default void connectJMXRemote(int port){
JMXServiceURL url;
try {
url = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:" + port + "/jmxrmi");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
l.debug("Remote JMX connection is successful");
} catch (IOException e) {
l.debug(getStackTrace(e));
}
}
default String getTrace(Throwable t){
return getStackTrace(t);
}
static String getStackTrace(Throwable t){
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
return sw.toString();
}
}