2009-06-20 4 views
10

J'écris un exemple de code dans lequel un serveur Jetty embarqué est démarré. Le serveur doit charger un seul servlet, envoyer toutes les demandes au servlet et écouter localhost: 80Le code le plus court pour démarrer le serveur Jetty intégré

Mon code à ce jour:

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); 
     } 

    } 

Puis-je faire la même chose avec moins de code/lignes? (Jetty 6.1.0 utilisé).

Répondre

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); 
    } 
} 

Suppression des espaces inutiles et déplacement de la création de ServletHolder en ligne. Cela a supprimé 5 lignes.

5

Vous pouvez configurer la jetée déclarative dans un applicationContext.xml de printemps, par exemple:

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

alors récupérer simplement le grain de serveur à partir du applicationContext.xml et appelez commencer ... Je crois que rend un ligne de code puis ... :)

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

Ceci est utile pour les tests d'intégration impliquant Jetty.

1

Fonctionne avec la jetée 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

J'ai écrit une bibliothèque, EasyJetty, qui le rend beaucoup plus facile d'intégrer la jetée. C'est juste un mince couche au-dessus de l'API Jetty, vraiment léger.

Votre exemple ressemblerait à ceci:

import com.athaydes.easyjetty.EasyJetty; 

public class Sample { 

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

} 
Questions connexes