2012-10-04 38 views
0

我想要使用Java中的Web服务,并且正在使用JAX.WS.一切工作正常,直到我尝试通过SSL(https)使用web服务。我已经使用keytool将该站点的证书添加到密钥库。仍然没有成功。任何人都做过?该webservice来自第三方支付网关,如paypal-payflo等...所以定期web服务,其证书来自Verisign。任何提示都会有帮助。这是一个带有wsdl的SOAP web服务。在Java中使用通过SSL的WebService

的错误跟踪:螺纹

异常 “主要” javax.xml.ws.WebServiceException:无法 访问WSDL在: xxxxx.xxxxxx.xxx/creditcardWS/CreditCardService/v1?wsdl 。它失败了 :Got Connection refused:从 xxxxxx.xxxxxx.xxx/creditcardWS/CreditCardService/v1?wsdl开始流时连接。在 com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLPars er.java:173) at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser .ja va:155) at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.ja va:120) at com.sun.xml.internal.ws.client .WSServiceDelegate.parseWSDL(WSServiceDelegate.jav a:260) at com.sun.xml.internal.ws.client.WSServiceDelegate。(WSServiceDelegate.java:2 23) at com.sun.xml.internal。 ws.client.WSServiceDelegate。(WSServiceDelegate.java:1 71) at com.sun.xml.int ernal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:96)

+1

详细信息将帮助我们......你得到了什么异常?你如何管理你的密钥存储,等? – home

+0

线程“main”中的异常javax.xml.ws.WebServiceException:无法访问WSDL,网址为:https://xxxxx.xxxxxx.xxx/creditcardWS/CreditCardService/v1?wsdl。失败: \t Got拒绝连接:打开https://xxxxxx.xxxxxx.xxx/creditcardWS/CreditCardService/v1?wsdl。 \t com.sun.xml.internal.ws.wsdl.parse r.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:173) \t在com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:155) \t在com.sun.xml.internal。 ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:120) \t在..... – Clyde

+0

com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:260) \t在com.sun.xml.internal.ws.client.WSServiceDelegate。 (WSServiceDelegate.java:223) \t at com.sun.xml.internal.ws.client.WSServiceDelegate。 (WSServiceDelegate.java:171) \t at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:96) – Clyde

回答

1

是否将您自己的密钥库设置为javax.net.ssl.trustStore帮助?

String keystorePath = "local.keystore"; 
System.setProperty("javax.net.ssl.trustStore", keystorePath); 

一定要检查您是否可以从该路径读取(当前例子假定local.keystore是在类路径中。

+0

我已经完成了它,我想我应该加密请求,这是为什么,我不知道如何去做。我知道用Apache HTTPComponents发布表单的解决方案,但我不知道如何在这种类型的请求中进行加密。 – Clyde

+0

我认为所有这些属性应该设置在这些JAX.WS类的通信级别内部工作,而不是在System.setProperty()的JVM级别中... – Clyde