2009-06-20 9 views
10

Ich schreibe einen Beispielcode, in dem ein eingebetteter Jetty-Server gestartet wird. Der Server muss genau ein Servlet laden, alle Anfragen an das Servlet senden und hören auf localhost: 80Kürzester Code zum Starten des eingebetteten Jetty-Servers

Mein Code so weit:

static void startJetty() { 
     try { 
      Server server = new Server(); 

      Connector con = new SelectChannelConnector(); 
      con.setPort(80); 
      server.addConnector(con); 

      Context context = new Context(server, "/", Context.SESSIONS); 
      ServletHolder holder = new ServletHolder(new MyApp()); 
      context.addServlet(holder, "/*"); 

      server.start(); 
     } catch (Exception ex) { 
      System.err.println(ex); 
     } 

    } 

Kann ich das gleiche tun mit weniger Code/Linien? (Anlegestelle 6.1.0 verwendet).

Antwort

13
static void startJetty() { 
    try { 
     Server server = new Server(); 
     Connector con = new SelectChannelConnector(); 
     con.setPort(80); 
     server.addConnector(con); 
     Context context = new Context(server, "/", Context.SESSIONS); 
     context.addServlet(new ServletHolder(new MyApp()), "/*"); 
     server.start(); 
    } catch (Exception ex) { 
     System.err.println(ex); 
    } 
} 

Unnötige Leerzeichen entfernt und ServletHolder-Erstellung inline verschoben. Das ist 5 Zeilen entfernt.

5

Sie könnten Jetty konfigurieren deklarativ in einem Frühling applicationContext.xml, zB:

http://roopindersingh.com/2008/12/10/spring-and-jetty-integration/

dann einfach die Server-Bean aus dem applicationContext.xml abrufen und rufen Sie beginnen ... Ich glaube, dass macht es zu einem Codezeile dann ... :)

((Server)appContext.getBean("jettyServer")).start(); 

Es ist nützlich für Integrationstests mit Jetty.

1

Arbeiten mit Jetty 8:

import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.webapp.WebAppContext; 

public class Main { 
    public static void main(String[] args) throws Exception { 
      Server server = new Server(8080); 
      WebAppContext handler = new WebAppContext(); 
      handler.setResourceBase("/"); 
      handler.setContextPath("/"); 
      handler.addServlet(new ServletHolder(new MyApp()), "/*"); 
      server.setHandler(handler); 
      server.start(); 
    } 
} 
1
 Server server = new Server(8080); 
     Context root = new Context(server, "/"); 
     root.setResourceBase("./pom.xml"); 
     root.setHandler(new ResourceHandler()); 
     server.start(); 
2

ich eine Bibliothek geschrieben habe, EasyJetty, dass es viel leichter macht Jetty einzubetten. Es ist nur eine dünne Schicht über dem Jetty API, wirklich leicht.

Ihr Beispiel würde wie folgt aussehen:

import com.athaydes.easyjetty.EasyJetty; 

public class Sample { 

    public static void main(String[] args) { 
     new EasyJetty().port(80).servlet("/*", MyApp.class).start(); 
    } 

} 
Verwandte Themen