Question

J'écris un exemple de code dans lequel un serveur Jetty intégré est démarré. Le serveur doit charger exactement un servlet, envoyer toutes les demandes au servlet et écouter sur localhost: 80

Mon code jusqu'à présent:

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é).

Était-ce utile?

La solution

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 ServletHolder en ligne. C'est enlevé 5 lignes.

Autres conseils

Vous pouvez configurer Jetty de manière déclarative dans un fichier Spring applicationcontext.xml, par exemple:

.

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

puis récupérez simplement le bean server de applicationcontext.xml et appelez start ... Je crois que cela en fait une ligne de code puis ...:)

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

C’est utile pour les tests d’intégration impliquant Jetty.

J'ai écrit une bibliothèque, EasyJetty , qui facilite beaucoup l'intégration de Jetty. C’est juste une mince couche au-dessus de l’API Jetty, vraiment légère.

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

}

Fonctionne avec 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();
    }
}
        Server server = new Server(8080);
        Context root = new Context(server, "/");
        root.setResourceBase("./pom.xml");
        root.setHandler(new ResourceHandler());
        server.start();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top