Java中nonProxyHosts属性的有效正则表达式格式是什么?
在Java中使用Java中nonProxyHosts属性的有效正则表达式格式是什么?,java,regex,proxy,Java,Regex,Proxy,在Java中使用proxyHost、proxyPort和nonProxyHosts属性修改URL连接时,nonProxyHosts属性中通配符的有效用途是什么?我可以做以下任何或所有操作吗 显式服务器名称:nonProxyHosts=server.company.com 子域中的任何服务器:nonProxyHosts=*.local.company.com 按IP地址列出的特定服务器:nonProxyHosts=192.168.101.110 子网中的任何服务器:nonProxyHosts=19
proxyHost
、proxyPort
和nonProxyHosts
属性修改URL
连接时,nonProxyHosts
属性中通配符的有效用途是什么?我可以做以下任何或所有操作吗
nonProxyHosts=server.company.com
nonProxyHosts=*.local.company.com
nonProxyHosts=192.168.101.110
nonProxyHosts=192.168.101.*
nonProxyHosts=192.168.101/23
我认为属性值的解释是它定义了一个正则表达式池。如果主机匹配池中的任何表达式(主机和表达式都强制使用小写),则不使用代理 编辑:
或者不完全是。它看起来像
sun.misc.RegexpPool
只处理以“*”开头或结尾的字符串。所以我想这确实可以归结为前缀和后缀通配符
编辑2:测试的快速方法是使用:
ProxySelector.getDefault().select(URI.create("...myURI..."));
它将返回
列表
。默认代理选择器是sun.net.spi.DefaultProxySelector
,但它可以被覆盖。请查看OpenJDK源代码中的sun.net.spi.DefaultProxySelector
和sun.misc.Regexp
类。sunjvm的nonProxyHosts
系统属性在那里得到处理。根据@author
javadoc评论,Regexp类是由Java人James Gosling自己编写的。它所做的只是匹配*
正则表达式,字符串中的任意位置(开始、中间和结束)。因此,您可以使用部分主机名和部分IP地址,例如host12*
或10.*
来匹配以host12
开头的所有主机名或以10开头的所有IP。
。另外,DefaultProxySelector
在代理URL中检测localhost
和127.0.0.1
,并自动排除它们。因此,就Sun JVM而言,您不需要将它们添加到非ProxyHosts
现在,在Weblogic中,它们似乎有自己的Weblogic.net
类,这些类使用相同的Sun System net属性运行,但并不总是以相同的方式运行。我手头没有Weblogic源代码,但我的观点是,使用这些属性的不仅仅是Sun JDK。由于错误、语义或Sun行为和文档的不同解释,YMMV具有不同的代理实现
我引用的OpenJDK源代码版本来自于的OpenJDK-6。谢谢,但这正是我想要得到的定义。我可以在IP地址中使用通配符吗?我可以使用CIDR符号吗?谢谢我解释为CIDR是不可能的,但是您可以在IP(当IP请求某些内容时)和主机名(当主机名请求某些内容时)中使用通配符。代码解析很棒。这基本上回答了这个问题,也回答了我的好奇心。快捷方式(Edit2)就像一种魅力。您刚刚测试了返回到列表中的代理类型。我认为“正则表达式”是指“通配符”?这些例子在我看来一点都不像。