问题描述
如何在JRE级别指定代理服务器配置?
默认情况下,jre在 JAVA_HOME / jre / lib / net.properties 中具有网络配置文件。我已经在该文件中添加了代理配置。
http.proxyHost=10.96.59.156
http.proxyPort=3128
https.proxyHost=10.96.59.156
https.proxyPort=3128
如果我执行带有示例代码以击中auth.docker.io的spring boot应用程序,它将直接连接。
public class Test {
public static final String CURL_COMMAND = "curl -I -v https://auth.docker.io";
public void executeCurlCmd(String args[]) {
try {
Process process = Runtime.getRuntime().exec(CURL_COMMAND);
if(!process.waitFor(10,TimeUnit.SECONDS)) {
process.destroyForcibly();
System.out.println("Timeout,exceeded max waiting time(10 secs)");
}
StringBuilder responseBuilder = new StringBuilder("ExitValue:").append(process.exitValue()).append(" ")
.append(getoutputResponse(process)).append(getErrorResponse(process));
System.out.println(responseBuilder.toString());
} catch (Exception e) {
System.out.println("Exception occured"+ e.getMessage());
}
}
}
这是我的输出
ExitValue:0 HTTP / 1.1 404找不到内容类型:文本/纯文本; charset = utf-8 X-Content-Type-Options:nosniff日期:Tue,27 Oct 2020 08:40:03 GMT内容长度:19严格传输安全性: max-age = 31536000 *重建的URL至:https://auth.docker.io/%总计% 接收的%Xferd平均速度时间时间时间当前Dload上传 左总行驶速度0 0 0 0 0 0 0 0-:-:--:-:--:-:-0 * 尝试3.218.162.19 ... * TCP_NODELAY设置*已连接到auth.docker.io (3.218.162.19)端口443(#0)* ALPN,提供h2 * ALPN,提供 http / 1.1 *密码选择: 全部:!出口:!出口40 :!出口56:!aNULL :!低:!RC4:@STRENGTH * 成功设置证书验证位置:* CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath:无* TLSv1.2(OUT),TLS 标头,证书状态(22):} [5字节数据] * TLSv1.2(OUT),TLS 握手,客户端问候(1):} [512字节数据] * TLSv1.2(IN),TLS 握手,服务器问候(2):{[89字节数据] * TLSv1.2(IN),TLS 握手,证书(11):{[4828字节数据] * TLSv1.2(IN),TLS 握手,服务器密钥交换(12):{[333字节数据] * TLSv1.2 (IN),TLS握手,服务器完成(14):{[4字节数据] * TLSv1.2 (OUT),TLS握手,客户端密钥交换(16):} [70字节数据] * TLSv1.2(OUT),TLS更改密码,更改密码规范(1):} [1字节 数据] * TLSv1.2(OUT),TLS握手,已完成(20):} [16字节数据]
- TLSv1.2(IN),TLS更改密码,更改密码规范(1):{[1字节数据] * TLSv1.2(IN),TLS握手,完成(20):{[16字节数据]
- 使用TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256的SSL连接* ALPN,服务器不同意协议*服务器证书:*主题: CN = .docker.io *开始日期:2020年5月23日00:00:00 GMT *截止日期: 6月23日12:00:00 2021 GMT * subjectAltName:主机“ auth.docker.io” 匹配证书的“ .docker.io” *发行者:C = US; O =亚马逊; OU =服务器CA 1B; CN = Amazon * SSL证书验证成功。 } [5字节数据]> HEAD / HTTP / 1.1>主机:auth.docker.io>用户代理:curl / 7.61.1>接受: / > {[5字节数据]
如java ignores proxy settings中所述,如果在http.proxyHost和http.proxyPort上无法访问代理服务器,则它只是后退并尝试进行直接连接。如果成功,则不会抛出任何异常,这就是为什么您的代码可以正常运行的原因。
如果我指定为JVM arg或从代码System.setProperties指定,我的应用程序就可以连接代理。但是我不想更改编码或使用JVM arg进行设置。我想通过JRE net.properties文件进行更改。
如何使我的应用程序通过代理连接到Internet并在JRE级别添加代理配置?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)