我需要实现一个 HTTP 代理服务器应用程序,它将来自多个客户端的请求代理到远程服务器。
以下是步骤:
- 客户端转发请求到代理
- 代理转发请求到服务器
- 服务器向代理返回请求
- 代理向客户端返回请求。
我只是不确定我应该如何实现这个代理。我的第一个想法是实现一个 tomcat 应用程序,它使用 jersey/apache httpclient 将请求转发到远程服务器并将响应返回给客户端?
有没有更好的方法来实现这样的代理服务器?
代理需要处理多个线程。
您不能将其实现为 servlet,也没有理由使用任何形式的 HTTP 客户端。
无功能的代理服务器是一件非常简单的事情:
否则启动两个线程来复制字节,每个方向一个。没有什么花哨的,只是
while ((count = in.read(buffer)) > 0)
{
out.write(buffer, 0, count);
}
或者使用 Apache SQUID。
查看LittleProxy——它具有用于传入和传出请求的内置类;您可以像在 servlet 中处理 HTTP 请求一样编写代码。