1. 程式人生 > >Jetty實戰(2)之嵌入式執行Jetty多Connector

Jetty實戰(2)之嵌入式執行Jetty多Connector

在嵌入執行Jetty的時候,有時候想要啟動兩個埠,或者通過一個Jetty server提供多個不同服務,比如說使用8080來指定預設訪問埠,使用8433指定https訪問埠等等,此時就可以通過建立多個Connector來解決。

1. 首先建立一個Server類,其中建立了兩個Connector例項,一個繫結到了8080埠,另一個繫結到了9090埠:

  1. package com.google.code.garbagecan.jettystudy.sample2;  
  2. import org.eclipse.jetty.server.Connector;  
  3. import org.eclipse.jetty.server.Server;  
  4. import org.eclipse.jetty.server.nio.SelectChannelConnector;  
  5. publicclass MyServer {  
  6.     public
    staticvoid main(String[] args) throws Exception {  
  7.         Server server = new Server();  
  8.         SelectChannelConnector connector1 = new SelectChannelConnector();  
  9.         connector1.setPort(8080);  
  10.         SelectChannelConnector connector2 = new SelectChannelConnector();  
  11.         connector2.setPort(9090
    );  
  12.         server.setConnectors(new Connector[] { connector1, connector2 });  
  13.         server.setHandler(new HelloHandler());  
  14.         server.start();  
  15.         server.join();  
  16.     }  
  17. }  
2. 建立一個Handler類,用了處理所有客戶端的請求
  1. package com.google.code.garbagecan.jettystudy.sample2;  
  2. import java.io.IOException;  
  3. import javax.servlet.ServletException;  
  4. import javax.servlet.http.HttpServletRequest;  
  5. import javax.servlet.http.HttpServletResponse;  
  6. import org.eclipse.jetty.server.Request;  
  7. import org.eclipse.jetty.server.handler.AbstractHandler;  
  8. publicclass HelloHandler extends AbstractHandler {  
  9.     publicvoid handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)  
  10.             throws IOException, ServletException {  
  11.         response.setContentType("text/html;charset=utf-8");  
  12.         response.setStatus(HttpServletResponse.SC_OK);  
  13.         baseRequest.setHandled(true);  
  14.         response.getWriter().println("<h1>Hello World</h1>");  
  15.         response.getWriter().println("<li>Request url: " + target + "</li>");  
  16.         response.getWriter().println("<li>Server port: " + request.getServerPort() + "</li>");  
  17.     }  
  18. }  
3. 執行MyServer類,通過瀏覽器分別訪問http://localhost:8080/和http://localhost:9090/。