How do I tell wsimport to use a proxy exception ur

2019-03-31 04:39发布

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

6条回答
三岁会撩人
2楼-- · 2019-03-31 05:01

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

查看更多
冷血范
3楼-- · 2019-03-31 05:07
wsimport -keep -verbose -httpproxy:172.18.14.192:8089 http://xxx.abc.com/services/s1?wsdl

As per Oracle JAVA 9 wsimport documentation

查看更多
等我变得足够好
4楼-- · 2019-03-31 05:10

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.

查看更多
Viruses.
5楼-- · 2019-03-31 05:12

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
查看更多
放荡不羁爱自由
6楼-- · 2019-03-31 05:16

You can use --httpproxy option of wsimport option too-

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

查看更多
够拽才男人
7楼-- · 2019-03-31 05:24

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.

查看更多
登录 后发表回答