2009-06-20 4 views
10

Я пишу код примера, в котором запущен встроенный сервер Jetty. Сервер должен загрузить ровно один сервлет, отправлять все запросы к сервлет и слушать на локальном хосте: 80Самый короткий код для запуска встроенного сервера Jetty

Мой код до сих пор:

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

    } 

Могу ли я сделать то же самое с меньшим количеством кода/линий? (Используется Jetty 6.1.0).

ответ

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

Удалены лишние пробелы и перемещены. Создано ServletHolder inline. Это удалено 5 строк.

5

Вы можете настроить Jetty декларативно в Spring applicationContext.xml, например:

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

затем просто получить боб сервера из applicationContext.xml и начала звонка ... Я считаю, что делает его одним строка кода затем ... :)

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

Полезно для интеграционных испытаний с участием Jetty.

1

Работает с 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

Я написал библиотеку, EasyJetty, что делает его гораздо легче вставлять Jetty. Это всего лишь тонкий слой над API Jetty, действительно легкий.

Ваш пример будет выглядеть следующим образом:

import com.athaydes.easyjetty.EasyJetty; 

public class Sample { 

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

} 

 Смежные вопросы

  • Нет связанных вопросов^_^