简体   繁体   中英

How do I tell wsimport to use a proxy exception url

I need to connect to an internal intranet web service. My company uses a proxy server to access the internet but intranet sites do not go through the proxy. I can navigate to the WSDL in IE and Firefox but I have to add the address to the proxy exception list in both browsers.

When I use wsimport I cannot get the WSDL because of the proxy server. Adding in or leaving out the -httpproxy arg gives me an error "Unable to tunnel through proxy" so I'm guessing this is not the way I need to do it.

Does anyone know a way I can tell wsimport to ignore the proxy server for this url?

Neil

I arrived on this post looking for a way to use proxy for internal (intranet) URLs and skip proxy for external URLs (w3c.com) using the wsimport.exe (part of JDK 1.6, 1.7,etc). I see that it does not have the facility to put nonProxyHosts, so I went ahead and used Java class invocations.

Something like this

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 

For easier readability:

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 

Keep in mind that "-Dhttp.nonProxyHosts" only works if you configure a proxy in that line before, you need ALL the parameters. So, if you just want to disable a default proxy you have to configure it here again.

I found the answer. You need to add the following as a JVM parameter and it uses the Internet Explorer (or Safari on Mac I assume) proxy address and exclusion list.

-Djava.net.useSystemProxies=true

I got the anser from http://jeannotsweblog.blogspot.co.uk/2009/06/wsimport-with-proxy.html

Currently wsimport is broken in this regard.

I created two tickets for that:

  1. https://java.net/jira/browse/JAX_WS-1154
  2. https://java.net/jira/browse/JAX_WS_COMMONS-132

Approach suggested by Neil Kennedy would work if you can set that flag at application level.However if you want to use proxy for specific url then have look at ProxySelector class. You can write your own proxy selector class which extends ProxySelector with your proxy host and port and then set it as default proxy selector.Have a look at this thread How can I use an HTTP proxy for a JAX-WS request without setting a system-wide property? for answer given by Uncle Iroh. Also have look at http://docs.oracle.com/javase/7/docs/technotes/guides/net/proxies.html for details of Proxyselector which clearly explains what is happening.

您也可以使用wsimport选项的--httpproxy选项 -

wsimport -keep -httpproxy:USERNAME:passwdsabc001@proxy.yourcmpny.com

wsimport -keep -verbose -httpproxy:172.18.14.192:8089 http://xxx.abc.com/services/s1?wsdl

根据Oracle JAVA 9 wsimport文档

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM