我需要连接到内部Intranet Web服务。我公司使用代理服务器访问互联网,但内部网站点不通过代理。我可以在IE和Firefox中导航到WSDL,但我必须在两个浏览器中将地址添加到代理例外列表中。
当我使用wsimport时,由于代理服务器,我无法获得WSDL。添加或删除-httpproxy arg给出了一个错误“无法通过代理隧道”,所以我猜这不是我需要这样做的方式。
有没有人知道我可以告诉wsimport忽略这个网址的代理服务器?
尼尔
答案 0 :(得分:7)
我在这篇文章中找到了一种方法,使用代理内部(Intranet)URL和使用wsimport.exe(JDK 1.6,1.7等的一部分)跳过外部URL代理(w3c.com)。我看到它没有放置nonProxyHosts的功能,所以我继续使用Java类调用。
像这样的东西
java -Dhttp.proxyHost=proxyServer -Dhttp.proxyPort=9000 -Dhttp.nonProxyHosts="localhost|*.intranet-domain.com" -classpath %JAVA_HOME%\lib\tools.jar com.sun.tools.internal.ws.WsImport -p com.ws.client.pkg http://app.intranet-domain.com/endpoint?wsdl
为了便于阅读:
java
-Dhttp.proxyHost=proxyServer
-Dhttp.proxyPort=9000
-Dhttp.nonProxyHosts="localhost|*.intranet-domain.com"
-classpath %JAVA_HOME%\lib\tools.jar
com.sun.tools.internal.ws.WsImport
-p com.ws.client.pkg
http://app.intranet-domain.com/endpoint?wsdl
请记住,“-Dhttp.nonProxyHosts”仅在您之前在该行中配置代理时才有效,您需要所有参数。因此,如果您只想禁用默认代理,则必须再次在此处进行配置。
答案 1 :(得分:2)
我找到了答案。您需要将以下内容添加为JVM参数,并使用Internet Explorer(或我假设的Mac上的Safari)代理地址和排除列表。
-Djava.net.useSystemProxies=true
我从http://jeannotsweblog.blogspot.co.uk/2009/06/wsimport-with-proxy.html
获得了anser答案 2 :(得分:2)
目前wsimport
在这方面已被打破。
我创建了两张票:
答案 3 :(得分:0)
如果您可以在应用程序级别设置该标志,那么Neil Kennedy建议的方法将起作用。但是,如果您想使用特定URL的代理,那么请查看ProxySelector类。您可以编写自己的代理选择器类,使用代理主机和端口扩展ProxySelector,然后将其设置为默认代理选择器。请查看此线程How can I use an HTTP proxy for a JAX-WS request without setting a system-wide property?以获取Uncle Iroh给出的答案。另请查看http://docs.oracle.com/javase/7/docs/technotes/guides/net/proxies.html以获取有关Proxyselector的详细信息,该内容清楚地说明了正在发生的事情。
答案 4 :(得分:0)
您也可以使用wsimport选项的--httpproxy
选项 -
wsimport -keep -httpproxy:USERNAME:passwdsabc001@proxy.yourcmpny.com
答案 5 :(得分:0)
wsimport -keep -verbose -httpproxy:172.18.14.192:8089 http://xxx.abc.com/services/s1?wsdl