【问题标题】:Can you use multiple proxies at once in java?你可以在java中一次使用多个代理吗?
【发布时间】:2014-03-15 18:50:03
【问题描述】:

我正在用 Java 编写我的服务器,一整天,我的服务器必须同时通过 5 个不同的代理连接到其他服务器并收集数据。但是,通过 stackexchange 阅读有关 java 代理设置的信息,我看到当您设置代理时,它的效果是 VM 范围的,这意味着 .jar 正在执行的任何网络活动,如果某个不同的线程设置了一个代理,它将通过代理执行它jar 中的代理设置。

我目前正在使用这种设置代理的方法,根据一些测试,它实际上非常实用并且运行速度很快。

    System.getProperties().put( "http.proxyHost", host );
    System.getProperties().put( "http.proxyPort", port );

但是,我真的负担不起让 5 个罐子用不同的代理做同样的事情,我试过了,这将是一个简单的解决方案,但是我不能只为此使用那么多 ram,因为我的服务器很大。

【问题讨论】:

  • 不知道,但也许this class 会让你感兴趣。还有更多this one
  • 我建议使用支持 http 代理的 AsyncHttpClient github.com/AsyncHttpClient/async-http-client
  • 感谢您的建议。我正在阅读 java Proxy 类,我读到它可以与 URLConnection 类一起使用,它没有说效果将是 VM-Wide,你使用该类的方式没有意义无论哪种方式,vm 范围的效果。
  • 没错。它仅适用于您使用它的连接。您问题中的术语不正确。系统属性是 JVM 范围的,而不是每个 jar 的。

标签: java networking proxy


【解决方案1】:

您需要使用自己的代理设置来调用每个连接。 NickDk 的答案here 定义了如何使用自己的代理设置调用 url。您需要分别对 5 个代理中的每一个执行相同的操作。

【讨论】:

    【解决方案2】:

    here 被描述为使用嵌入在 JRE 中的库,能够处理“proxypac”文件,其中可以定义任何代理组合。

    由于它嵌入在 JRE 中,可能存在使用 proxypac 文件(标准启动可选参数)配置 Java 应用程序的标准方法,但我不知道。

    但是,由于您的使用是程序化的,因此提供的链接中描述的解决方案应该适合您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 2010-10-08
      • 1970-01-01
      • 2016-08-10
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多