如何为 Wildfly 8.1 配置 HTTP 代理?Wildfly 实例在 RHEL 6.5 上独立运行。该机器无法直接访问互联网,但其中一个已部署的应用程序应使用现有的 HTTP 代理(无需身份验证)来调用 Google Cloud Messaging RESTful 服务。所以我必须以某种方式告诉 Wildfly 或它上面的应用程序来告诉代理在哪里。我正在通过默认的 init.d 脚本和 service wildfly start/stop/restart 启动/停止实例。
我已经使用 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 Webservice 的应用程序中,我仍然收到 ConnectionException:
java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method) [rt.jar:1.7.0_65]