我们遇到的高级问题是这个。我们已在公司网络上安装并运行Apache Wave。它适用于我们加载网站,注册,登录,创建和参与wave。但我似乎无法加载外部小工具,例如http://everybodywave.appspot.com/gadget/image/gadget.xml。我确定这是一个代理问题,因为我已在公司网络外安装了wave,我可以正常加载小工具。
我很困惑的地方;我已经在几个地方设置了Apache Wave的JVM代理设置,但是他们加载的小工具不起作用。我在jvm命令行上,在环境变量JAVA_OPTIONS,JAVA_OPTS,JETTY_OPTIONS和JETTY_OPTS中设置了http.proxyHost和http.proxyPort,并在调用加载小工具之前通过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属性?
答案 0 :(得分:4)
看起来jetty ProxyServlet
在封面下使用jetty异步http客户端,其中setProxy(Address)
用于设置代理。 ProxyServlet
还包含一个扩展点,用于执行随附的HttpClient
的自定义配置,但Wave平台不会公开这一点。我想你有两个选择:
ProxyServlet
的自定义版本,该版本从系统属性或其他内容中获取代理地址,并将其设置在已包装的HttpClient
上。这很简单,也是我选择的选择。