2012-03-07 5 views
0

Java 소켓을 사용하여 프록시 서버 (Fwd 및 Reverse)를 만들었습니다.jetty8을 사용하여 프록시 서버를 만드는 방법은 무엇입니까?

브라우저에서 구성된 8080의 수신 요청을 수신하여 다른 Proxy Server2로 전달합니다.

그리고 server2가 보낸 응답을 읽고 브라우저에 씁니다.

코드는 요청 및 응답을 로깅하고 브라우저에서 미리 정의 된 특정 요청 유형을 차단합니다.

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

응답을 받으면 프록시 서버로 전달하고 응답을 기다리고 브라우저에 다시 씁니다. 도움이 필요해.

+0

당신은 코드가 여기에 기록 싶어? – Greenhorn

+0

정확히는 아닙니다. 들어오는 요청을 캡처 할 수 있었지만 지금은 요청을 Server2로 전달하고 Server2에서 보낸 응답을 브라우저에 기록하려고합니다. 이전에는 부두가 ProxyHandler라고 불리는 클래스를 가졌지 만 이제는 Depricated와 Im이 변경에 관한 정보를 찾을 수 없다고 생각합니다. 그래서 저는 문제의 두 번째 부분에 대해서만 도움이 필요합니다. – Gaurav

답변

5

jetty-servlets 아티팩트에는 비동기 프록시 작업을 수행하는 ProxyServlet이 있습니다.

난 그저 시도하고 당신의 필요에 맞는 지보십시오.

해당 프로젝트의 테스트에서는 AsyncProxyServer를 사용하여 시작하고 소용돌이 칠 수 있습니다.

프록시에 사용되는 기본 연속 및 돌발 클라이언트는 사용자 정의 방법을 통해 확장 가능합니다.

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

행운

관련 문제