简体   繁体   English

无法使用Apache cxf soap通过代理进行隧道传输

[英]Unable to tunnel through proxy with Apache cxf soap

I'm trying to call via SOAP over an HTTPS Proxy with Apache CXF. 我试图通过Apache CXF上的HTTPS代理通过SOAP调用。

It's a Java Application running on Cloud Foundry. 它是在Cloud Foundry上运行的Java应用程序。 The Proxy is provided as a Cloud Foundry service. 代理服务器作为Cloud Foundry服务提供。 Rest calls are working with via configuration in a RestTemplateCustomizer. 休息调用正在使用RestTemplateCustomizer中的via配置。

I tried the following (I tried every commended statement without success): 我尝试了下面的内容(我尝试了所有推荐的声明但没有成功):

    PortType port = cs.getServicePort();
    assert port instanceof BindingProvider;
    BindingProvider bp = (BindingProvider) port;
    bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, serviceURL);
    //bp.getRequestContext().put("https.proxyHost", endpoint.getHost());
    //bp.getRequestContext().put("https.proxyPort", endpoint.getPort());

    final Client client = ClientProxy.getClient(port);
    final HTTPConduit http = (HTTPConduit) client.getConduit();

    http.getClient().setProxyServer(endpoint.getHost());
    http.getClient().setProxyServerPort(endpoint.getPort());
    http.getProxyAuthorization().setUserName(configProperties.getUser());
    http.getProxyAuthorization().setPassword(configProperties.getPassword());

    //http.getProxyAuthorization().setAuthorizationType("Basic");
    //http.getClient().setProxyServerType(ProxyServerType.SOCKS);

    http.getAuthorization().setUserName(configProperties.getUser());
    http.getAuthorization().setPassword(configProperties.getPassword());
    //http.getAuthorization().setAuthorizationType("Basic");

Stacktrace looks like: Stacktrace看起来像:

2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT javax.xml.ws.WebServiceException: Could not send Message. 2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT javax.xml.ws.WebServiceException:无法发送消息。 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.jaxws.JaxWsClientProxy.mapException(JaxWsClientProxy.java:183) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at com.sun.proxy.$Proxy288.getConfigurations(Unknown Source) 2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.jaxws.JaxWsClientProxy.mapException(JaxWsClientProxy.java:183)2013-05-16T11:11:53.76+ 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)2013-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0]在com.sun.proxy输出。$ Proxy288.getConfigurations(未知来源)

#

2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT Caused by: java.io.IOException: IOException invoking https://service.com/services/Service/v1 : Unable to tunnel through proxy. 2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT引起:java.io.IOException:IOException调用https://service.com/services/Service/v1 :无法通过隧道代理。 Proxy returns "HTTP/1.1 407 Proxy Authentication Required" 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1402) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1386) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.transport.AbstractConduit.close(AbstractCondu 代理返回“需要HTTP / 1.1 407代理验证”2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)2019-05-16T11: 11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at java.lang.reflect.Constructor.newInstance(Constructor。 java:423)2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.transport.http.HTTPConduit $ WrappedOutputStream.mapException(HTTPConduit.java:1402)2019- 05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.transport.http.HTTPConduit $ WrappedOutputStream.close(HTTPConduit.java:1386)2019-05-16T11:11: 53.76 + 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.transport.AbstractConduit.close(AbstractCondu it.java:56) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:673) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:440) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:355) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.frontend.Client it.java:56)201-05-05T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:673)2019- 05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.interceptor.MessageSenderInterceptor $ MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63)2013-05-16T11:11:53.76+ 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.endpoint。 ClientImpl.invoke(ClientImpl.java:440)2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:355) 2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)2019-05-16T11:11:53.76+ 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.frontend.Client Proxy.invokeSync(ClientProxy.java:96) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140) 2019-05-16T11:11:53.76+0200 [APP/PROC/WEB/0] OUT ... 131 common frames omitted Proxy.invokeSync(ClientProxy.java:96)2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140) 2019-05-16T11:11:53.76 + 0200 [APP / PROC / WEB / 0] OUT ...省略了131个常用帧

Found a solution. 找到了解决方案。 I had to set the following flag: 我必须设置以下标志:

-Djdk.http.auth.tunneling.disabledSchemes=""

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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