Самый короткий код для запуска встроенного сервера Jetty
Я пишу код примера, в котором запущен встроенный сервер Jetty. Сервер должен загружать ровно один сервлет, отправлять все запросы сервлету и слушать на localhost: 80
Мой код:
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).
Ответы
Ответ 1
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 строк.
Ответ 2
Вы можете настроить Jetty декларативно в Spring applicationcontext.xml, например:
http://roopindersingh.com/2008/12/10/spring-and-jetty-integration/
затем просто извлеките сервер bean из applicationcontext.xml и начните вызов... Я считаю, что это делает его одной строкой кода...:)
((Server)appContext.getBean("jettyServer")).start();
Это полезно для тестов интеграции с Jetty.
Ответ 3
Я написал библиотеку, 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();
}
}
Ответ 4
Работает с 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();
}
}
Ответ 5
Server server = new Server(8080);
Context root = new Context(server, "/");
root.setResourceBase("./pom.xml");
root.setHandler(new ResourceHandler());
server.start();