1

Как настроить HTTP-прокси для Wildfly 8.1? Экземпляр Wildfly запускается как автономный на RHEL 6.5. У машины нет прямого доступа к Интернету, но одно из развернутых приложений должно использовать существующий HTTP-прокси (без проверки подлинности), чтобы вызвать службу Google Cloud Messaging. Поэтому я должен сказать Wildfly или приложение на нем, чтобы указать, где находится прокси. Я запускаю/останавливаю экземпляр с помощью сценариев init.d по умолчанию с сервисом wildfly start/stop/restart.Настройка прокси-сервера Http для Wildfly 8.1.0

Я уже получил прокси-сервер работает на Tomcat экземпляра с помощью JAVA_OPTS, поэтому я попробовал то же самое для wildfly:

Настройка прокси-сервера с помощью JAVA_OPTS в standalone.sh

# Display our environment 
echo "=========================================================================" 
echo "" 
echo " JBoss Bootstrap Environment" 
echo "" 
echo " JBOSS_HOME: $JBOSS_HOME" 
echo "" 
echo " JAVA: $JAVA" 
echo "" 
echo " JAVA_OPTS: $JAVA_OPTS" 
echo "" 
echo "=========================================================================" 
echo "" 

JAVA_OPTS="$JAVA_OPTS -Dhttp.proxyHost=myproxy -Dhttp.proxyPort=3128 -Dhttps.proxyHost=myproxy -Dhttps.proxyPort=3128" 

while true; do 
    if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then 
     # Execute the JVM in the foreground 
     eval \"$JAVA\" -D\"[Standalone]\" $JAVA_OPTS \ 
     \"-Dorg.jboss.boot.log.file=$JBOSS_LOG_DIR/server.log\" \ 
     \"-Dlogging.configuration=file:$JBOSS_CONFIG_DIR/logging.properties\" \ 
     -jar \"$JBOSS_HOME/jboss-modules.jar\" \ 
     -mp \"${JBOSS_MODULEPATH}\" \ 
     org.jboss.as.standalone \ 
     -Djboss.home.dir=\"$JBOSS_HOME\" \ 
     -Djboss.server.base.dir=\"$JBOSS_BASE_DIR\" \ 
     "$SERVER_OPTS" 
     JBOSS_STATUS=$? 
    else 
     # Execute the JVM in the background 
     eval \"$JAVA\" -D\"[Standalone]\" $JAVA_OPTS \ 
     \"-Dorg.jboss.boot.log.file=$JBOSS_LOG_DIR/server.log\" \ 
     \"-Dlogging.configuration=file:$JBOSS_CONFIG_DIR/logging.properties\" \ 
     -jar \"$JBOSS_HOME/jboss-modules.jar\" \ 
     -mp \"${JBOSS_MODULEPATH}\" \ 
     org.jboss.as.standalone \ 
     -Djboss.home.dir=\"$JBOSS_HOME\" \ 
     -Djboss.server.base.dir=\"$JBOSS_BASE_DIR\" \ 
     "$SERVER_OPTS" "&" 
     JBOSS_PID=$! 

загрузка сервера без ошибок и запуск ps aux дает мне экземпляр wildfly, у которого JAVA_OPTS установлен правильно. ps aux output

Прокси настроен правильно и работает, например. с загнутым: curl example

Однако в Заявке, которая дислоцируется на wildfly и пытается вызвать GCM WebService, я все еще получаю ConnectionException:

java.net.ConnectException: Connection timed out 
     at java.net.PlainSocketImpl.socketConnect(Native Method) [rt.jar:1.7.0_65] 

ответ

1

Проблема может быть решена не устанавливая прокси глобально для сервера приложений, но в Исходник-, который делает остальные запросы против GCM:

//this is your request-body, as byte-array 
byte[] body; 
URL url = new URL("https://android.googleapis.com/gcm/send"); 
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy-host.com", 3128)); 
URLConnection con = url.openConnection(proxy); 
HttpURLConnection con1 = (HttpURLConnection) con; 

con1.setRequestMethod("POST"); 
con1.setRequestProperty("Content-type", "application/json"); 
con1.setDoOutput(true); 
con1.setUseCaches(false); 
con1.setFixedLengthStreamingMode(body.length); 

OutputStream out = con1.getOutputStream(); 
try { 
    out.write(body); 
} finally { 
    out.close(); 
} 
0

У вас есть механизм повторных попыток? Если нет, вы можете пройти через documentation об пояснениях об ошибках. Вы можете попробовать тайм-аут. Посмотрите, работает ли это. Это может быть проблемой при использовании прокси без аутентификации.

Смежные вопросы