For what it's worth, it's not too hard to embed JavaMelody into an existing app. The way I do it is to start a Jetty server ad add the monitoring filter to it manually. "/monitoring" on the Jetty server will be JavaMelody.
The following code is against Jetty 6, and let's agree that I haven't tested it, but it gives you the drift. Newer versions of Jetty are different, but the idea is the same.
import javax.servlet.Filter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.bio.SocketConnector;
import org.mortbay.jetty.servlet.Context;
import org.mortbay.jetty.servlet.FilterHolder;
import org.mortbay.jetty.servlet.ServletHolder;
import org.mortbay.thread.QueuedThreadPool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
main() {
Server webServer = new Server();
QueuedThreadPool pool = new QueuedThreadPool();
pool.setMinThreads(2);
pool.setMaxThreads(10);
pool.setName("DebugServer(port" + port + ")");
pool.setDaemon(true);
webServer.setThreadPool(pool);
connector = new SocketConnector();
connector.setPort(port);
connector.setHost(server);
connector.setMaxIdleTime(60000); // 1 min
webServer.addConnector(connector);
context.setContextPath("/");
webServer.setHandler(context);
// Set Java Melody storage Directory
CommonMain.setJavaMelodyStorageDirectoryProperty("foo");
Filter monitoringFilter = new net.bull.javamelody.MonitoringFilter();
context.addFilter(new FilterHolder(monitoringFilter), "/monitoring", Handler.REQUEST);
LOG.info("Running debug HTTP server on " + server + ":" + port);