客户端如何访问htts协议的webservice服务啊

suntaiyang 2008-09-10 11:00:10
各位仁兄,求教啊
就是我配置好了HTTPS服务,并建立了一个webservice服务,在IE里面输入访问地址:https://192.168.0.141:8449/sqlworkflow/services/workflowService?wsdl访问成功,现在我编写客户端去访问该服务,怎么都弄不好,找了好多相关资料同时按别人步骤去生成证书一系列的也还是没有,这里把错误粘贴下,希望大家帮忙解答下,先谢了.
服务端代码:
public static void main(String args[])
{
String wsdlUrl = "https://192.168.0.142:8449/sqlworkflow/services/workflowService?wsdl";
Service service = new Service();
try {
Call call = (Call) service.createCall();
//call.getMessageContext().setUsername( "dakmc.p12");
//call.getMessageContext().setPassword( "123456 ");
call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
call.setOperationName(new QName("workflowService", "getTestValue"));
String nihao =(String)call.invoke(new Object[] {"123456789"});
System.out.println(nihao);
}catch (Exception e){
e.printStackTrace();
}
}
错误显示:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:150)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1476)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:174)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:168)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:847)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:106)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:495)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:433)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:815)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1025)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1038)
at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186)
at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at cn.hkgt.workflow.soap.impl.Test8.main(Test8.java:23)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:221)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:145)
at sun.security.validator.Validator.validate(Validator.java:203)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:172)
at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(SSLContextImpl.java:320)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:840)
... 20 more
...全文
678 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyl_wind 2008-09-16
  • 打赏
  • 举报
回复
你这个services是基于axis的服务吗?
如果是用keytool生成相应的服务端证书,客户端程序中进行引用,让客户端信任服务器证书颁发机构
类似代码如下:
System.setProperty("javax.net.ssl.trustStore",
"C:\\mystore.jks");
//密码
System.setProperty("javax.net.ssl.trustStorePassword","123456");
这个帖子说得比较详细:
http://203.208.35.101/search?q=cache:HtvlNrFq5TwJ:topic.csdn.net/u/20080318/16/a955c8c5-aa82-4ee9-b6f7-639aa9d3f203.html+axis2+%E5%AE%A2%E6%88%B7%E7%AB%AF+ssl&hl=zh-CN&ct=clnk&cd=36&gl=cn&st_usg=ALhdy293t-FnvDGPglSWBBAZCvoRkzaQyQ
希望对你有用
suntaiyang 2008-09-10
  • 打赏
  • 举报
回复
上面仁兄 jre/lib/security/cacerts文件已经存在 且在tomcat中配置的证书时自己用j诉讼就jsse生成的服务器端的密匙库(server.keystore)和信任库(server.truststore)拷贝到Tomcat下配置的,如下: <Connector port="8449"
maxThreads="3000" minSpareThreads="1000" maxSpareThreads="2500"
enableLookups="false" disableUploadTimeout="true"
acceptCount="2000" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="I:\jakarta-tomcat-5.5.9\server.keystore" keystorePass="changeit"
truststoreFile="I:\jakarta-tomcat-5.5.9\server.truststore" truststorePass="changeit"


/>
但客户端不管怎么访问都是上面的错误,我都没则了,找过好多相关的信息,试了也不成,上面兄弟能否详细说下呢!有什么技术点,客户端编写的时候,我在ie中访问服务段的wsdl是成功的也就是说,应该配置好了,问题出在客户端怎么去交互阿 ?
老紫竹 2008-09-10
  • 打赏
  • 举报
回复
unable to find valid certification path to requested target
还是证书的问题啊!
检查tomcat使用的信任证书路径,通常是jre/lib/security/cacerts文件,看是否已经
导入了所需信任证书。
去google搜索这个异常,有好多的
suntaiyang 2008-09-10
  • 打赏
  • 举报
回复
怎么没有兄弟回阿

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧