2012-04-06 5 views
1

Le problème de haut niveau que nous avons est celui-ci. Nous avons installé et utilisé Apache Wave sur notre réseau d'entreprise. Cela fonctionne aussi bien que le chargement du site, l'enregistrement, la connexion, la création et la participation aux vagues. Mais je ne peux pas sembler obtenir des gadgets externes, comme http://everybodywave.appspot.com/gadget/image/gadget.xml, pour charger. Je suis sûr que c'est une question de proxy parce que j'ai installé des ondes en dehors du réseau de l'entreprise et que je peux charger des gadgets très bien.Apache vague derrière la société proxy; ou jetty ne respecte pas les propriétés de proxy

Où je suis confus est; J'ai défini les paramètres de proxy de la JVM d'Apache Wave à plusieurs endroits, mais le chargement des gadgets ne fonctionne pas. J'ai défini http.proxyHost et http.proxyPort sur la ligne de commande jvm, dans les variables d'environnement JAVA_OPTIONS, JAVA_OPTS, JETTY_OPTIONS et JETTY_OPTS, et via System.setProperty juste avant l'appel pour charger un gadget. J'ai ajouté du code pour cracher un site externe dans jvm d'Apache Wave et cela fonctionne, ainsi les paramètres de proxy fonctionnent. Mais les gadgets ne le font toujours pas.

est ici le point le plus proche du problème que je peux dire: https://svn.apache.org/repos/asf/incubator/wave/trunk/src/org/waveprotocol/box/server/ServerMain.java Je reçois un message de débogage quelque part ci-dessous l'appel à: (ligne 121, en GadgetProxyServlet)

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

Le débogage est :

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

Alors peut-être ma question est .. pourquoi pas une jetée ProxyServlet.Transparent honorera les paramètres de proxy http du jvm? Ai-je besoin de définir une propriété Jetty aussi?

Répondre

4

Il semble que la jetée ProxyServlet utilise le client http async de la jetée sous les couvertures qui a un setProxy(Address) pour définir les proxies. ProxyServlet contient également un point d'extension pour effectuer la configuration personnalisée du HttpClient joint, mais cela n'est pas exposé par la plate-forme Wave. Je dirais que vous avez deux options:

  • Fournir une version personnalisée de la jetée ProxyServlet qui prend l'adresse proxy des propriétés du système ou quelque chose et il fixe sur le enveloppé HttpClient. C'est assez simple et serait l'option que j'irais avec.
  • En même temps, vous pouvez soumettre une demande d'amélioration à l'équipe Wave pour exposer ce paramètre.
+0

Merci! Cela a fonctionné. Je suis un peu confus comment cela fonctionne, depuis regarder ProxyServlet de Jetty, il semble qu'il crée un nouveau Socket brut pour obtenir l'URL du gadget (http://git.eclipse.org/c/jetty/org.eclipse.jetty. project.git/arbre/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/ProxyServlet.java? h = jetty-8). Cela m'a amené à croire que j'avais besoin d'un proxy SOCKS que je n'ai pas. Mais de toute façon votre suggestion a fonctionné. – kenen

+0

Heureux que cela a fonctionné et voir ce que vous dites. Il introduit cette connexion au proxy et copie la requête et place la sortie de la réponse sur un thread avec l'entrée socket. Presque comme dans ce cas, il ne fait rien par lui-même. –