2009-06-20 28 views
10

Tôi đang viết một số mã mẫu trong đó máy chủ Jetty được nhúng được bắt đầu. Các máy chủ phải tải chính xác một servlet, gửi tất cả các yêu cầu đến servlet và nghe trên localhost: 80Mã ngắn nhất để bắt đầu máy chủ Jetty được nhúng

Mã của tôi cho đến nay:

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

    } 

Tôi có thể làm tương tự với mã/dòng ít? (Sử dụng Jetty 6.1.0).

Trả lời

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

Xóa khoảng trắng không cần thiết và di chuyển nội dung tạo ServletHolder. Đó là loại bỏ 5 dòng.

5

Bạn có thể cấu hình Jetty khai báo trong một applicationcontext.xml Spring, ví dụ:

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

sau đó chỉ cần lấy đậu máy chủ từ applicationcontext.xml và gọi bắt đầu ... Tôi tin rằng làm cho nó trở thành một dòng mã sau đó ... :)

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

Nó rất hữu ích cho các bài kiểm tra tích hợp liên quan đến Jetty.

1

trình với 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

Tôi đã viết một thư viện, EasyJetty, mà làm cho nó dễ dàng hơn nhiều để nhúng Jetty. Nó chỉ là một lớp mỏng phía trên API Jetty, thực sự là trọng lượng nhẹ.

Ví dụ của bạn sẽ như sau:

import com.athaydes.easyjetty.EasyJetty; 

public class Sample { 

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

} 
Các vấn đề liên quan