1

我们遇到的高级问题是这样的。我们已经在公司网络上安装并运行了 Apache Wave。只要我们加载网站、注册、登录、创建和参与 wave,它就可以工作。但我似乎无法加载外部小工具,例如http://everybodywave.appspot.com/gadget/image/gadget.xml 。我确定这是一个代理问题,因为我已经在公司网络之外安装了 wave,而且我能够很好地加载小工具。

我感到困惑的地方是;我已经在几个地方设置了 Apache Wave 的 JVM 代理设置,但是它们加载小工具不起作用。我已经在 jvm 命令行、环境变量 JAVA_OPTIONS、JAVA_OPTS、JETTY_OPTIONS 和 JETTY_OPTS 中以及在调用加载小工具之前通过 System.setProperty 设置了 http.proxyHost 和 http.proxyPort。我添加了一些代码来在 Apache Wave 的 jvm 中吐出一个外部站点,并且可以正常工作,因此代理设置可以正常工作。但小工具仍然没有。

这是我能说的最接近问题的一点: https://svn.apache.org/repos/asf/incubator/wave/trunk/src/org/waveprotocol/box/server/ServerMain.java 我得到调用下方某处的调试消息:(第 121 行;在 GadgetProxyServlet 中)

public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    proxyServlet.service(req, res);

调试是:

[java] 2012-04-06 10:47:25.197:WARN:oejsKwbs.ServerMain$GadgetProxyServlet, annotation=[none]]:java.net.ConnectException: Connection timed out

所以也许我的问题是.. 为什么 Jetty ProxyServlet.Transparent 不尊重 jvm 的 http 代理设置?我是否也需要设置一些 Jetty 属性?

4

1 回答 1

4

看起来码头在幕后ProxyServlet使用了码头异步 http 客户端,该客户端具有setProxy(Address)用于设置代理的功能。 ProxyServlet还包含一个扩展点来执行所附 的自定义配置HttpClient,但这并没有被 Wave 平台公开。我会说你有两个选择:

  • 提供自定义版本的码头ProxyServlet,它从系统属性或其他东西中获取代理地址并将其设置在包装好的HttpClient. 这很简单,将是我的选择。
  • 同时,您可以向 wave 团队提交增强请求以公开此设置。
于 2012-04-06T19:38:01.030 回答