запуск Vertx через прокси

Кому-нибудь повезло с попыткой использовать vertx bi за корпоративным прокси? Я пробовал все возможные способы, которые приходили мне в голову, чтобы предоставить vertx информацию о прокси. Пока ничего не работает.

установить переменную среды http_proxy = http://mycorporate.proxy.com:8080 - не повезло

установить переменную среды VERTX_OPTS = '- Dhttp.proxyHost = mycorporate.proxy.com -Dhttp.proxyPort = 8080' - не повезло

установить переменные среды http.proxyHost = mycorporate.proxy.com http.proxyPort = 8080 не повезло

Ввод дополнительного эха в команду vertx. Я вижу, что параметры, связанные с прокси-сервером, передаются в JVM правильно, но требуемый модуль все еще не может быть загружен ("vertx run hello.js" просто застрял, очевидно, пытаясь загрузить io.vertx ~ lang-rhino ~ 2.0.0-финал)

Сам прокси в порядке - я использую его без проблем для maven, sbt и других разных вещей, требующих прокси. Тот же ноутбук, который используется из дома, может успешно запустить «vertx run hello.js» с загрузкой io.vertx ~ lang-rhino ~ 2.0 .0-финал (для первого запуска)

Я только начал оценивать vertx для нужд нашей компании, и это моя первая точка удушья, мешающая моим дальнейшим попыткам принять решение. Пока я должен выполнить следующие шаги в качестве обходного пути: 1 Бежать из дома и получить все необходимые модули в sys-mods. 2 Вручную загрузите модули в sys-mods на тестовом сервере, когда вернетесь в офис. Очевидно, что это ненормальный способ запускать что-либо.


person user3246046    schedule 28.01.2014    source источник
comment
Когда я решил это, я указал ручной прокси-сервер, а не автоматический. После подключения необходимо было вызвать vert.x один раз для каждого загружаемого компонента, прежде чем он успешно развернет вертикаль.   -  person Kirk A    schedule 04.12.2014


Ответы (4)


У меня была аналогичная проблема. Я выяснил, что форма HttpClient не считывает настройки из JVM_OPTS. Итак, решение было следующим:

Отредактируйте ваш vertx.bat (sh)

set JVM_OPTS=-Dhttp.proxyHost=xxxx -Dhttp.proxyPort=xxxx

а затем в коде, связанном с httpClient, попробуйте что-то вроде этого

   HttpClient client = vertx.createHttpClient();
    String proxyHost = System.getProperty("http.proxyHost", "none");
    Integer proxyPort = Integer.valueOf(System.getProperty("http.proxyPort", "80"));

    if(!"none".equalsIgnoreCase(proxyHost)){

        client.setHost(proxyHost);
        client.setPort(proxyPort);
    }

и позже в коде передан HTTP-запрос

   MultiMap map = new CaseInsensitiveMultiMap();
   map.add("Host", domainName); //get domain of REQUESTED_URL                 
   client.getNow(REQUESTED_URL, map, new new Handler<HttpClientResponse>(){...});
person Kamyk.pl    schedule 06.10.2014
comment
Это не работает, потому что http-клиент vertx3 не имеет упомянутых методов (setHost () и setPort ()). - person whitenexx; 17.04.2016

Основываясь на ответе @ kamyk-pl. Если вы используете последнюю версию Vertx, вот что вы можете сделать:

    WebClientOptions webClientOptions = new WebClientOptions();
    String proxyHost = System.getProperty("http.proxyHost", "none");
    Integer proxyPort = Integer.valueOf(System.getProperty("http.proxyPort", "80"));

    if(!"none".equalsIgnoreCase(proxyHost)){
        ProxyOptions proxyOptions = new ProxyOptions();
        proxyOptions.setHost(proxyHost);
        proxyOptions.setPort(proxyPort);
        webClientOptions.setProxyOptions(proxyOptions);
    }

     WebClient.create(vertx, webClientOptions) 

При желании вы также хотите добавить это, если вы тестируете SSL-соединения.

        webClientOptions.setVerifyHost(false);
        webClientOptions.setTrustAll(true);
person Yeikel    schedule 27.06.2019

Пользуюсь vertx 3.8.0

                HttpClient c = vertx.createHttpClient();
                        RequestOptions requestOptions = new RequestOptions();
                        requestOptions.setHost(ip).setPort(port).setURI("http://httpbin.org/ip");
                        c.request(HttpMethod.GET, requestOptions).handler(new Handler<HttpClientResponse>() {
                            @Override
                            public void handle(HttpClientResponse event) {
                                event.handler(new Handler<Buffer>() {
                                    @Override
                                    public void handle(Buffer event) {
                                        System.out.println(event);
                                    }
                                });
                            }
                        }).end();
person lialzm    schedule 05.08.2019

Чтобы установить прокси, отредактируйте vertx.bat (если у вас Windows) и добавьте

set JVM_OPTS=-Dhttp.proxyHost=xxxx -Dhttp.proxyPort=xxxx
person gammay    schedule 17.07.2014