2012-11-13 106 views
1

我試圖調用端點超出https的外部Web服務。連接超時嘗試從JAX-WS調用asmx https web服務

我們正在嘗試使用JAX-WS(Java EE 6的Oracle標準實現)進行調用。

從了SoapUI設置是否能夠正常工作的代理之後,但是從我們的代碼,我們得到這個堆棧跟蹤:

[11/13/12 12:46:55:389 CET] 00000024 SystemErr R javax.xml.ws.WebServiceException: java.net.ConnectException: Connection timed out: no further information 
[11/13/12 12:46:55:405 CET] 00000024 SystemErr R at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:175) 
[11/13/12 12:46:55:405 CET] 00000024 SystemErr R at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70) 
[11/13/12 12:46:55:405 CET] 00000024 SystemErr R at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:128) 
[11/13/12 12:46:55:405 CET] 00000024 SystemErr R at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.execute(AxisInvocationController.java:586) 
[11/13/12 12:46:55:405 CET] 00000024 SystemErr R at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.doInvoke(AxisInvocationController.java:130) 
[11/13/12 12:46:55:405 CET] 00000024 SystemErr R at org.apache.axis2.jaxws.core.controller.impl.InvocationControllerImpl.invoke(InvocationControllerImpl.java:93) 
[11/13/12 12:46:55:405 CET] 00000024 SystemErr R at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:364) 
[11/13/12 12:46:55:405 CET] 00000024 SystemErr R at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invoke(JAXWSProxyHandler.java:185) 

我們不知道爲什麼我們得到的連接超時,因爲從了SoapUI一切正常。 ..

下面是我們所使用的代碼:

ResultBlock rb = null; 
Matching stub=new Matching(); 
MatchingSoap soapPort = stub.getMatchingSoap(); 
BindingProvider provider = (BindingProvider) soapPort; 
Map<String, Object> context = provider.getRequestContext(); 
if(!"".equals("cvsa"))//Conf.getPROXY_URL() 
{ 
    System.getProperties().get("http.proxyPort"); 
    //Authenticator.setDefault(new ProxyAuthenticator("user", "password")); 
    System.getProperties().put("proxySet", "true"); 
    System.setProperty("http.proxyHost", "proxy.xxxxx.xxxx.xx"); 
    System.setProperty("http.proxyPort", "3128"); 
} 
context.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://xxx.xxx.xxx.xxx/OnlineMatchingCore/OnlineMatching.asmx"); 
//context.put(JAXWSProperties.HTTP_CLIENT_STREAMING_CHUNK_SIZE, 8192); 
System.out.println(provider.getEndpointReference().toString()); 
// Authenticator.setDefault(new ProxyAuthenticator("USER", "PASSWORD")); 


// Security.setProperty("ssl.SocketFactory.provider", "com.ibm.jsse2.SSLSocketFactoryImpl"); 
// Security.setProperty("ssl.ServerSocketFactory.provider", "com.ibm.jsse2.SSLServerSocketFactoryImpl"); 

String result = soapPort.match(controlXml, batchXml, "USER", "PASSWORD"); 

我看到很多線程關於這樣的問題在互聯網上,但我找不到任何解決辦法:

我不知道什麼嘗試,我的想法是,我失蹤一些關於告訴java web服務在https上...

回答

0

您是否嘗試設置https代理而不是http代理?

System.setProperty("https.proxyHost", "proxy ip"); 
System.setProperty("https.proxyPort", "port");