当使用 Java 中的 proxyHost
、proxyPort
和 nonProxyHosts
属性修改 URL
连接时,什么是nonProxyHosts
属性中通配符的有效使用?我可以执行以下任何或所有操作吗?
- 明确的服务器名称:
nonProxyHosts=server.company.com
- 子域中的任何服务器:
nonProxyHosts=*.local.company.com
- IP 地址的特定服务器:
nonProxyHosts=192.168.101.110
- 子网中的任何服务器:
nonProxyHosts=192.168.101.*
- 子网中的任何服务器:
nonProxyHosts=192.168.101/23
还有其他类型的模式吗?
谢谢!
最佳答案
查看 sun.net.spi.DefaultProxySelector
和 sun.misc.Regexp
类的 OpenJDK 源代码。 nonProxyHosts
系统属性在此处为 Sun JVM 进行处理。根据 @author
javadoc 注释,Regexp 类是由 Java 人 James Gosling 自己编写的。它所做的只是匹配 *
正则表达式,字符串中的任何位置(开头、中间和结尾)。因此,您可以使用部分主机名和部分 IP 地址,例如 host12*
或 10.*
来匹配所有以 host12
开头的主机名或所有以 10.
开头的 IP。此外,DefaultProxySelector
检测代理 URL 中的 localhost
和 127.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/