JAVA_OPTS, JAVA_TOOL_OPTIONS,_JAVA_OPTIONS傻傻分不清楚

本文详细介绍了如何正确配置Java应用程序以通过代理服务器访问互联网。作者发现常见的java_opts环境变量配置httpproxy的方法无效,而使用java_tool_options或_java_options变量进行-Dhttp.proxyHost等参数配置才是有效途径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近为了给java设置proxy,以便让java程序可以通过proxy来访问互联网,在网上查了不少资料。 绝大多数都说要在java_opts环境变量设置http proxy参数即可,但是实际上根本没有用。 真正有用的是java_tool_options 和 _java_options这两个环境变量,它们基本上是等效的。

c:\>echo %_JAVA_OPTIONS%
-Dhttp.proxyHost=proxy.sample.com -Dhttp.proxyPort=8080 -Dhttp.proxyUser=sam -Dhtt
p.proxyPassword=sam2014

转载于:https://my.oschina.net/pearma/blog/1549158

@echo off setlocal chcp 65001 > nul set CURRENT_DIR=%cd% cd .. set CAF_HOME=%cd% cd %CURRENT_DIR% if not exist %CAF_HOME%\bin\caf-server.bat ( goto end ) set CAF_BASE=%CAF_HOME% call %CAF_BASE%\bin\config.bat set HBN_TOOL=%CAF_BASE%\bin\hibernate-selector.bat if not exist %HBN_TOOL% ( goto end ) call %HBN_TOOL% %* set CLASSPATH= set CAF_BOOTSTRAP=%CAF_HOME%\%CAF_SERVER_PATH%\runtime\caf-bootstrap.jar set CAF_BOOTSTRAP_LANUCHER=org.springframework.boot.loader.PropertiesLauncher set CAF_MODULE_PATHS="%CAF_HOME%\%CAF_SERVER_PATH%\runtime\3rd","%CAF_HOME%\%CAF_SERVER_PATH%\runtime\libs" set CAF_BOOT_CONFIG_PATH=%CAF_HOME%/%CAF_SERVER_PATH%/runtime/ set JAVA_OPTS=%JAVA_OPTS% -Dparallel.startup=%CAF_PARALLEL_INIT% set /a totalMem=16777216+1 for /f "skip=1" %%i in ('wmic os get TotalVisibleMemorySize') do ( if %%i geq 0 set totalMem=%%i ) set /a "memorySize=%totalMem%/1024" set /a "totalMem=%memorySize%/10*6" set XmxSize=%totalMem%M if not defined CAF_MEM_OPTS ( if %memorySize% leq 16384 set CAF_MEM_OPTS=-Xmx%XmxSize% ) if not exist %CAF_HOME%\bin\java-home.bat ( goto end ) call %CAF_HOME%\bin\java-home.bat %1 if errorlevel 1 goto end if "%CLASSPATH%" == """" goto emptyClasspath set "CLASSPATH=%CLASSPATH%;" :emptyClasspath set CLASSPATH=%CLASSPATH%;%CAF_HOME%\%CAF_SERVER_PATH%\runtime\caf-bootstrap.jar if "%CAF_TMPDIR%" == """" goto gotTmpdir :gotTmpdir set CAF_TMPDIR=%CAF_BASE%\temp if not "%JSSE_OPTS%" == """" goto gotJsseOpts set JSSE_OPTS=-Djdk.tls.ephemeralDHKeySize=2048 :gotJsseOpts set JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% set JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.caf.webresources set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.lang=ALL-UNNAMED" set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.io=ALL-UNNAMED" set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.util=ALL-UNNAMED" set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.util.concurrent=ALL-UNNAMED" set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED" set ENDORSED_PROP=ignore.endorsed.dirs if "%JAVA_ENDORSED_DIRS%" == """" goto noEndorsedVar set ENDORSED_PROP=java.endorsed.dirs goto doneEndorsed :noEndorsedVar if not exist %CAF_HOME%\endorsed goto doneEndorsed set ENDORSED_PROP=java.endorsed.dirs :doneEndorsed set MAINCLASS=%CAF_BOOTSTRAP_LANUCHER% --spring.config.location=%CAF_BOOT_CONFIG_PATH% set ACTION=start set SECURITY_POLICY_FILE= set DEBUG_OPTS= set JPDA= set DEBUG_PORT="5005" if ""%1"" == ""run"" goto doRun if ""%1"" == ""start"" goto doStart goto end :doRun shift if not ""%1"" == ""-security"" goto execRunCmd shift set "SECURITY_POLICY_FILE=%CAF_BASE%\conf\caf.policy" goto execRunCmd :execRunCmd set CMD_LINE_ARGS= :setRunArgs if ""%1""=="""" goto doneRunSetArgs set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 shift goto setRunArgs :doneRunSetArgs "%JAVA_HOME%\bin\java" %CAF_OPTS% -server -Djava.io.tmpdir=%CAF_TMPDIR% -Dloader.path=%CAF_MODULE_PATHS% -Dfile.encoding=UTF-8 %JAVA_OPTS% -Dserver.runtime.path.name=%CAF_SERVER_PATH% %CAF_MEM_OPTS% -Dspring.profiles.active=prod -classpath %CLASSPATH% %MAINCLASS% goto end :doStart shift if "%TITLE%" == """" set TITLE=iGIX Server set _EXECJAVA=start "%TITLE%" cmd /k if not ""%1"" == ""-security"" goto execStartCmd shift set "SECURITY_POLICY_FILE=%CAF_BASE%\conf\caf.policy" goto execStartCmd :execStartCmd set CMD_LINE_ARGS= :setStartArgs if ""%1""=="""" goto doneSetStartArgs set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 shift goto setStartArgs :doneSetStartArgs %_EXECJAVA% "chcp 65001 > nul && %_RUNJAVA% %CAF_OPTS% -server -Djava.io.tmpdir=%CAF_TMPDIR% -Dloader.path=%CAF_MODULE_PATHS% -Dfile.encoding=UTF-8 %JAVA_OPTS% -Dserver.runtime.path.name=%CAF_SERVER_PATH% %CAF_MEM_OPTS% -Dspring.profiles.active=prod -classpath %CLASSPATH% %MAINCLASS% %CMD_LINE_ARGS%" goto end :end详细解释一下
03-27
### 如何在 YAML 文件中设置 JAVA_OPTIONS 为了在 YAML 文件中配置 `JAVA_OPTIONS` 或类似的环境变量,通常是在定义应用程序运行环境的上下文中完成这一操作。当涉及到像 Docker Compose 这样的工具时,在服务定义部分可以利用 `environment` 关键字来设定环境变量。 对于特定于 Java 应用程序的选项,如 `JAVA_TOOL_OPTIONS` 和 `JAVA_OPTS`,可以直接将其作为键值对加入到 `environment` 下面[^3]: ```yaml services: app-service-name: image: your-java-app-image environment: - JAVA_TOOL_OPTIONS=-Dexample.property=value -XX:+PrintFlagsFinal - JAVA_OPTS=-Xms512m -Xmx4096m ``` 上述例子展示了如何向名为 `app-service-name` 的服务添加两个不同的 Java 配置项。请注意,虽然两者都可以用来传递 JVM 参数给应用,但在实践中应当只选用一种方式以避免冲突或混淆行为。 如果遇到某些情况下这些变量未被正确识别或者生效的问题,则可能是由于入口命令(entrypoint)未能适当地处理传入的环境变量所致。此时可以通过显式调用 shell 来确保所有环境变量得到解析并应用于启动命令之中[^4]: ```yaml entrypoint: "/bin/sh -c \"java $$JAVA_OPTS -jar /path/to/app.jar\"" ``` 这里使用了双美元符号(`$$`)来进行转义,从而使得最终执行的时候能够正常替换为实际的环境变量值。 #### 设置示例 下面是一个完整的 docker-compose.yml 示例片段,它演示了如何在一个基于 Spring Boot 构建的应用程序的服务描述里声明 `JAVA_OPTS`: ```yaml version: '3' services: springbootapp: build: . ports: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=prod - JAVA_OPTS=-Xms512M -Xmx2G -Dspring.datasource.url=jdbc:mysql://dbserver:3306/mydatabase?useSSL=false&serverTimezone=UTC depends_on: - dbserver volumes: data-volume: ``` 此段代码不仅设置了内存分配参数 `-Xms512M -Xmx2G` ,还指定了数据源 URL 等其他必要的系统属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值