Le JDK 7 fournit une API intégrée à JAX-WS, qui permet de servir facilement du contenu web en http, sans rien d'autre qu'une JRE java7.

Le principal intérêt de ce genre d'approche étant la possibilité d'exposer en HTTP les fonctions d'un programme java, sans avoir à installer autre chose que la JRE (pas besoin de serveur d'application, etc...) : la méthode est par contre inadaptée aux contextes de forte montée en charge !

L'exemple de code ci-dessous est un mini serveur web : pour l'adapter, il suffit de changer l'URL et le chemin du fichier à servir. A ceci près, il compile et fonctionne parfaitement !
Compilation : javac WebServer.java
Exécution java WebServer (et contactez l'URL http://localhost:1234/hello avec votre navigateur).

// WebServer.java

import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.activation.MimetypesFileTypeMap;

import javax.xml.ws.Endpoint;
import javax.xml.ws.Provider;
import javax.xml.ws.Service.Mode;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;
import javax.xml.ws.http.HTTPBinding;

public class WebServer {

  public static void main(String args[]) {
    Endpoint endpoint = Endpoint.create(
      HTTPBinding.HTTP_BINDING, new HtmlFileProvider());
    System.out.println("Starting web server at http://localhost:1234/hello");
    endpoint.publish("http://localhost:1234/hello");
  }

}

@WebServiceProvider
@ServiceMode(Mode.MESSAGE)
class HtmlFileProvider implements Provider {

  @Override
  public DataSource invoke(DataSource request) {

    // Change path below to serve your own HTML file...
    FileDataSource fds = new FileDataSource("/var/www/index.html");

    MimetypesFileTypeMap ftm = new MimetypesFileTypeMap();
    ftm.addMimeTypes("text/html html htm" );
    fds.setFileTypeMap(ftm);
    return fds;
  }

}