1

I'm writing a Java application that will run for a long time (essentially, it stays running between system restarts) and does a fair bit of intensive near real-time data processing. Data is delivered to the application, some work is done on that data, and it's then passed on for delivery.

I need to provide a way to inspect the inner workings of the application at runtime. I've already got a fairly well established but hand-carved telnet style interface that allows you to use a command line to ask questions about statistics, data queues, etc, but I'd like to move that to HTTP as I think it will allow me to provide a much richer picture of what's going on (showing load graphs, etc).

Are there any established Java frameworks that allow me to embed a web server and handle requests in a reasonable way? I don't really want to have to hand-carve a whole lot of HTML handling and response generation as it's just annoying background noise to the essence of what I need.

starblue
  • 55,348
  • 14
  • 97
  • 151
Andrew
  • 11,894
  • 12
  • 69
  • 85

2 Answers2

1

Are you sure you want to embed an HTTP interface?

A pretty common way of doing things like this is to set the Java application up with a restricted RMI interface. Then, you write a J2EE (JSP/Servlet) web interface which makes RMI calls to the application for data.

This setup avoids you having to implement the HTTP protocol (or any other interface protocol - RMI calls are just Java methods), and also separates data (the embedded J2SE program) from presentation (the user-interface J2EE program).

Borealid
  • 95,191
  • 9
  • 106
  • 122
1

You may want to consider using jconsole and JMX (http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html).

They provide a graphical way to see what is going on inside your application and you can also setup controls to perform given actions through jconsole.

rmcnew
  • 329
  • 1
  • 4
  • VisualVM is a superset replacement for JConsole (and jinfo, jmap, jstack, jstat). It is bundled with newer JVMs alongside jconsole - type 'jvisualvm'. Post about this: [From JConsole to VisualVM](http://marxsoftware.blogspot.com/2008/08/from-jconsole-to-visualvm.html) – Cincinnati Joe Jun 21 '11 at 17:12