Как создать Proxy Server с помощью jetty8? - PullRequest
0 голосов
/ 07 марта 2012

Я создал прокси-сервер (Fwd и Reverse) с использованием сокетов Java.

, который будет прослушивать входящий запрос на 8080, настроенный в браузере, и перенаправлять их на другой прокси-сервер2.

И прочитайте ответ, отправленный сервером2, и запишите его в браузер.

Между тем код будет регистрировать запросы и ответы, а также блокировать определенные предварительно определенные типы запросов из браузера.

Теперь я хочу сделать это с помощью Jetty, а также поддерживать HTTPS-запрос.

Я искал, например, но не нашел.

Это запускает сервер на 8080, который я настроилв качестве прокси-порта в настройках прокси браузера.

 import org.eclipse.jetty.server.Server;

import Handler.HelloHandler;

public class StartJetty
{
    public static void main(String[] args) throws Exception
    {
        Server server = new Server(8080);

        server.setHandler(new HelloHandler());
        server.start();
        server.join();
    }
}

Это обработчик, который я использую для прослушивания запроса и записи ответа обратно в браузер.

package Handler;

import java.io.IOException;

 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

 import org.eclipse.jetty.server.Request;
 import org.eclipse.jetty.server.handler.AbstractHandler;

public class HelloHandler extends AbstractHandler
{
    final String _greeting;
          final String _body;

          public HelloHandler()
          {
              _greeting="Hello World";
              _body=null;
          }

          public HelloHandler(String greeting)
          {
              _greeting=greeting;
              _body=null;
          }

          public HelloHandler(String greeting,String body)
          {
              _greeting=greeting;
              _body=body;
          }

          public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
          {
              response.setContentType("text/html;charset=utf-8");
              response.setStatus(HttpServletResponse.SC_OK);
              baseRequest.setHandled(true);

              response.getWriter().println("<h1>"+_greeting+"</h1>");
              if (_body!=null)
                  response.getWriter().println(_body);
          }
}

Получив ответ, яхотите переслать его на прокси-сервер, дождаться его ответа и записать обратно в браузер.Мне нужна помощь с этим.

1 Ответ

5 голосов
/ 07 марта 2012

В артефакте jetty-сервлетов есть ProxyServlet, который будет выполнять асинхронную работу прокси для вас.

Я бы просто попробовал и посмотрел, соответствует ли он вашим потребностям.

Втесты этого проекта - AsyncProxyServer, который вы можете просто запустить и развернуть.

Базовые клиенты продолжения и Jetty, используемые для прокси, расширяются с помощью методов настройки.

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/ProxyServlet.java?h=jetty-8

и

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AsyncProxyServer.java?h=jetty-8

удачи

...