我正在编写一些启动嵌入式Jetty服务器的示例代码。服务器必须只加载一个servlet,将所有请求发送到servlet并监听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)。
答案 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。这已经删除了5行。
答案 1 :(得分:5)
您可以在Spring applicationcontext.xml中以声明方式配置Jetty,例如:
http://roopindersingh.com/2008/12/10/spring-and-jetty-integration/
然后只需从applicationcontext.xml中检索服务器bean并调用start ...我相信它会使它成为一行代码然后......:)
((Server)appContext.getBean("jettyServer")).start();
它对涉及Jetty的集成测试很有用。
答案 2 :(得分:2)
我已经编写了一个库EasyJetty,这使得嵌入Jetty变得更加容易。它只是Jetty API上方的一层薄层,非常轻巧。
您的示例如下所示:
import com.athaydes.easyjetty.EasyJetty;
public class Sample {
public static void main(String[] args) {
new EasyJetty().port(80).servlet("/*", MyApp.class).start();
}
}
答案 3 :(得分: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();
}
}
答案 4 :(得分:1)
Server server = new Server(8080);
Context root = new Context(server, "/");
root.setResourceBase("./pom.xml");
root.setHandler(new ResourceHandler());
server.start();