2012-04-06 6 views
1

우리가 가진 높은 수준의 문제는 이것입니다. Apache Wave가 설치되어 회사 네트워크에서 실행되고 있습니다. 그것은 우리가 사이트를 로딩하고, 등록하고, 로그인하고, 파도를 만들고 참여할 때까지 작동합니다. 하지만 http://everybodywave.appspot.com/gadget/image/gadget.xml과 같은 외부 가제트를로드 할 수 없습니다. 기업 네트워크 외부에서 웨이브를 설치했기 때문에 프록시 문제라고 확신합니다. 가제트를 제대로로드 할 수 있습니다.회사 프록시 뒤에 아파치 웨이브; 또는 부두가 프록시 속성을 준수하지 않습니다

나는 혼란 스럽다. 아파치 웨이브의 JVM 프록시 설정을 여러 곳에서 설정했지만, 가젯을로드하는 것은 작동하지 않습니다. 환경 변수 JAVA_OPTIONS, JAVA_OPTS, JETTY_OPTIONS 및 JETTY_OPTS에서 jvm 명령 줄에 http.proxyHost 및 http.proxyPort를 설정하고 호출하기 전에 System.setProperty를 통해 가젯을로드하도록 설정했습니다. Apache Wave의 jvm에서 외부 사이트를 뱉어내는 코드를 추가 했으므로 프록시 설정이 제대로 작동합니다. 그러나 가젯은 여전히 ​​그렇지 않습니다. (; GadgetProxyServlet에서 라인 121)

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

디버그는 다음과 같습니다 https://svn.apache.org/repos/asf/incubator/wave/trunk/src/org/waveprotocol/box/server/ServerMain.java 을 어디 선가 호출 아래에 디버그 메시지를 받고 있어요 : 여기

은 내가 말할 수있는 문제에 가장 가까운 지점입니다 :

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

그래서 어쩌면 내 질문은 왜 부두 ProxyServlet.Transparent는 JVM의 HTTP 프록시 설정을 존중하지 않는 ...인가? 부두 속성도 설정해야합니까?

답변

4

부두처럼 보입니다. ProxyServlet은 덮개 아래에 부두 비동기 http 클라이언트를 사용합니다.이 클라이언트는 프록시 설정을 위해 setProxy(Address)입니다. ProxyServlet에는 동봉 된 HttpClient의 사용자 지정 구성을 수행 할 확장 지점도 포함되어 있지만 Wave 플랫폼에서는이를 노출하지 않습니다.

  • 시스템 속성이나 뭔가에서 프록시 주소를 가져와 포장 HttpClient에 그것을 설정하는 부두 ProxyServlet의 사용자 정의 버전을 제공 : 당신이 두 가지 옵션이 있습니다 말하고 싶지만. 이것은 매우 간단하며 내가 갈 수있는 옵션이 될 것입니다.
  • 동시에 웨이브 팀과 함께 강화 요청을 제출하여이 설정을 공개 할 수 있습니다.
+0

감사! 이것은 효과가 있었다. 약간의 효과가 있습니다. Jetty의 ProxyServlet을보고 나서 가젯 URL (http://git.eclipse.org/c/jetty/org.eclipse.jetty)을 가져 오는 새로운 원시 소켓을 만드는 것처럼 보입니다. project.git/tree/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/ProxyServlet.java? h = jetty-8). 그게 내가 가지고 있지 않은 양말 프록시가 필요하다고 믿게 만들었습니다. 그러나 어쨌든 당신의 제안은 효과가있었습니다. – kenen

+0

다행이었고 당신이 말하는 것을 보았습니다. 이 연결을 프록시에 도입하고 요청을 복사 한 다음 응답을 소켓 입력이있는 스레드에 출력합니다. 거의이 경우와 마찬가지로 프록시 자체를 수행하지 않습니다. –