java - Java 中 nonProxyHosts 属性的有效正则表达式格式是什么?

标签 java regex proxy

当使用 Java 中的 proxyHostproxyPortnonProxyHosts 属性修改 URL 连接时,什么是nonProxyHosts 属性中通配符的有效使用?我可以执行以下任何或所有操作吗?

  1. 明确的服务器名称:nonProxyHosts=server.company.com
  2. 子域中的任何服务器:nonProxyHosts=*.local.company.com
  3. IP 地址的特定服务器:nonProxyHosts=192.168.101.110
  4. 子网中的任何服务器:nonProxyHosts=192.168.101.*
  5. 子网中的任何服务器:nonProxyHosts=192.168.101/23

还有其他类型的模式吗?

谢谢!

最佳答案

查看 sun.net.spi.DefaultProxySelectorsun.misc.Regexp 类的 OpenJDK 源代码。 nonProxyHosts 系统属性在此处为 Sun JVM 进行处理。根据 @author javadoc 注释,Regexp 类是由 Java 人 James Gosling 自己编写的。它所做的只是匹配 * 正则表达式,字符串中的任何位置(开头、中间和结尾)。因此,您可以使用部分主机名和部分 IP 地址,例如 host12*10.* 来匹配所有以 host12 开头的主机名或所有以 10. 开头的 IP。此外,DefaultProxySelector 检测代理 URL 中的 localhost127.0.0.1 并自动排除它们。因此,就 Sun JVM 而言,您无需将它们添加到 nonProxyHosts

现在,在 Weblogic 中,它们似乎有自己的 weblogic.net 类,这些类使用相同的 Sun System 网络属性运行,但方式并不总是相同。我手头没有 Weblogic 源代码,但我的观点是,使用这些属性的不仅仅是 Sun JDK。由于错误或不同的语义或对 Sun 行为和文档的解释,YMMV 具有不同的代理实现。

我引用的 OpenJDK 源版本来自 openjdk-6,地址为 http://download.java.net/openjdk/jdk6/ .

关于java - Java 中 nonProxyHosts 属性的有效正则表达式格式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4073202/

相关文章:

node.js - Nodejs 请求 'proxy' 选项未通过定义的主机路由请求

java - 将数组设置为对象属性

javascript - javascript 中正则表达式lookbehinds 的问题

linux - 仅代理某些域

带有日语注音假名的 MySQL 正则表达式

java - 正则表达式组不适用于多个地址

Java Socks 代理套接字错误

java - 如何使用 Java 解析 Atop(Linux 实用程序)的原始文件?

Java——关闭扫描器和资源泄漏

Java while 循环嵌套在for 循环中。