我使用Java套接字创建了一个代理服务器(Fwd和Reverse) .
这将听取在浏览器中配置的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);
}
}
一旦得到响应,我想将其转发到代理服务器,等待其响应并将其写回浏览器 . 我需要帮助 .
1 回答
在jetty-servlets工件中,有一个ProxyServlet可以为您执行异步代理工作 .
我会尝试一下,看看它是否符合您的需求 .
在该项目的测试中是一个AsyncProxyServer,您可以启动它并进行旋转 .
用于代理的基础continuation和jetty客户端可通过customize方法进行扩展 .
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
祝好运