微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在jre级别设置代理配置

如何解决如何在jre级别设置代理配置

如何在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 举报,一经查实,本站将立刻删除。