2007-12-09
web service 采用https 的问题
关键字: webservice ssl axis https
最近一个项目,接口包含了web service接口,想想很简单的(以前都没有使用ssl,没想到ssl会遇到一些麻烦),就是调用别人的web service,开始用了xfire来做,通过wsdl很快生成了代码,写好测试类,运行,错误出现了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 这样的异常,初步判断是ssl的问题。找了xfire的文档,发现,如果要使用https的连接,需要相应的处理。于是在代码前加入
再运行刚才的错误消失了,又出现了新的问题org.codehaus.xfire.fault.XFireFault: No Deserializer found to deserialize a 'urn:pronto.creditReserveAPI.ver1:ns2:in0' using encoding style 'null'.不知道什么原因,google的大半天也没有解决(用axis调通后怀疑xfire生成的问题,不知道那位大侠遇到过如此问题,不吝指教),最后没有办法,决定换axis试试,生成代码也很顺利,同样遇到https的问题,这次的解决办法是参考了http://wwwww.javaeye.com/blog/94854的文章(在此谢谢了,帮了个大忙)(从ie导出证书,并在程序设置System.setProperty("javax.net.ssl.trustStore","D:/test/urltest/crt");或者在运行java时加入参数:-Djavax.net.ssl.trustStore=D:/test/urltest/crt. ),配置了客户端证书,然后测试,终于测试顺利通过。后话,在axis中出现PKIX path building failed的错误的时候,不知道还有没有别的办法进行处理,有时间再研究这个问题了。btw:(O'Reilly 的java security 第2版,里面的接口已经过时了,但是原理讲的很清楚)
ProtocolSocketFactory easy = new EasySSLProtocolSocketFactory();
Protocol protocol = new Protocol("https", easy, 80);
Protocol.registerProtocol("https", protocol);
再运行刚才的错误消失了,又出现了新的问题org.codehaus.xfire.fault.XFireFault: No Deserializer found to deserialize a 'urn:pronto.creditReserveAPI.ver1:ns2:in0' using encoding style 'null'.不知道什么原因,google的大半天也没有解决(用axis调通后怀疑xfire生成的问题,不知道那位大侠遇到过如此问题,不吝指教),最后没有办法,决定换axis试试,生成代码也很顺利,同样遇到https的问题,这次的解决办法是参考了http://wwwww.javaeye.com/blog/94854的文章(在此谢谢了,帮了个大忙)(从ie导出证书,并在程序设置System.setProperty("javax.net.ssl.trustStore","D:/test/urltest/crt");或者在运行java时加入参数:-Djavax.net.ssl.trustStore=D:/test/urltest/crt. ),配置了客户端证书,然后测试,终于测试顺利通过。后话,在axis中出现PKIX path building failed的错误的时候,不知道还有没有别的办法进行处理,有时间再研究这个问题了。btw:(O'Reilly 的java security 第2版,里面的接口已经过时了,但是原理讲的很清楚)
发表评论
- 浏览: 4158 次
- 性别:

- 来自: 深圳

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
web service 采用https 的 ...
正好工作中要用到,今天花了半天终于解决了spring+axis的问题接下来就是安 ...
-- by snowolf -
突然想学学php
同感
-- by fraser5 -
web service 采用https 的 ...
Rain哥是越来越强了
-- by StevenYu -
突然想学学php
批准
-- by wolifan -
Spring 多模块配置
注意是bean=,而不是local=。 真是一句话惊醒梦中人啊。。。
-- by Acegi






评论排行榜