torsdag 6 mars 2008

Java's inbyggda WebServer

I Java 6 så har Sun packat med en trevlig liten WebServer som naturligtvis pratar HTTP.
Den är tämligen enkel att använda och lämpar sig väldigt bra att göra små web gränssnitt med
t.ex. för administrativa göromål.

För att använda Servern behöver man bara ange vilken port den skall lyssna på och vilket
context den skall lyssna på. D.v.s. "/" om man skall ta hand om alla requests eller
"/admin" om man vill ta emot allt under den pathen.

Servern heter HttpServer och finns javadoc'ad här

ett enkelt exempel (hämtat från javadocen)
   HttpServer server = HttpServer.create(new InetSocketAddress(8000));
server.createContext("/applications/myapp", new MyHandler());
server.setExecutor(null); // creates a default executor
server.start();
Där MyHandler är en klass som implementerar HttpHandler interfacet.

Det mesta är tämligen enkelt, men kom bara ihåg att anropa sendResponsHeaders() innan man anropar getResponseBody(). När man fyllt sitt respons med data så skall man även komma ihåg att anropa close() på den OutputStream som man fick från getResponseBody() anropet. Glömmer man bort detta så kommer inte något svar att skickas.