Wildfly 8.1 の HTTP プロキシを設定するには? Wildfly インスタンスは、RHEL 6.5 でスタンドアロンとして実行されています。マシンはインターネットに直接アクセスできませんが、デプロイされたアプリケーションの 1 つは、既存の HTTP プロキシ (認証なし) を使用して、Google Cloud Messaging の安静なサービスを呼び出す必要があります。したがって、どういうわけか、Wildfly またはその上のアプリケーションに、プロキシがどこにあるかを伝える必要があります。service wildfly start/stop/restart を使用して、デフォルトの init.d スクリプトを使用してインスタンスを開始/停止しています。
JAVA_OPTS を使用して、Tomcat インスタンスに対してプロキシが機能するようになったので、wildfly に対しても同じことを試しました。
standalone.sh で JAVA_OPTS を介してプロキシを設定する
# 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 を実行すると、JAVA_OPTS が正しく設定された wildfly インスタンスが得られます。
プロキシが正しく設定され、curl などで動作します。
ただし、wildfly にデプロイされ、GCM Web サービスを呼び出そうとするアプリケーションでは、まだ ConnectionException が発生します。
java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method) [rt.jar:1.7.0_65]