我的blog:个人博客

最近工作需要调用外部的webservice,之前一直搞的是基于http的ws,没啥好说的

网上很多教程。这次对方提供的接口是基于https的接口,在网上查找都是需要生成密钥,安全证书

等。各种纠结,生成密钥的方法网上都有介绍,我也了解了下,大致是这样的步骤:

第一步、导出服务器端证书。用ie连接地址,然后出现了证书确认的提示框,点击查看证书-详细信息,点击复制到文件,选择base64编码,导出保存文件为test.cert。 第二步、把证书从其它文件导入到TrustStore文件中。 keytool -import -file test.cer -keystore test_store 第三步、设置java的javax.net.ssl.trustStore的系统属性

System.setProperty(“javax.net.ssl.trustStore”, “D: \\test_store”);//注意是绝对路径

System.setProperty("javax.net.ssl.keyStorePassword", "abc");

这样通过应用接口就可以直接访问服务了。

如果基于spring配置的话,cxf官网也给出了例子:

配置如下:、

file="my/file/dir/Morpit.jks"/>

file="my/file/dir/Truststore.jks"/>

.*_EXPORT_.*

.*_EXPORT1024_.*

.*_WITH_DES_.*

.*_WITH_AES_.*

.*_WITH_NULL_.*

.*_DH_anon_.*

Betty

password

但我们不想搞成这种生成证书的方法 ,网上也有办法实现接收所有证书参考:

http://blog.sina.com.cn/s/blog_557c420e0100pyx7.html

核心的东西就是TrustManager类,自己实现X509TrustManager .

但例子都是基于httpclient的,到底如何配置spring呢,开始纠结了

spring配置webservice的基本例子

factory-bean="myServiceFactory" factory-method="create"/>

首先想到的是  将将TrustManger类替换掉成接收所有证书的TrustManager类,

但如何注入是个问题,最后想到拦截器,debug模式进去后果然发现了TrustManger

只需要将这个替换掉就ok,于是写一个interceptor,在spring配置:

myTrustInterceptor主要实现:

public void handleMessage(Message message) throws Fault {

System.out.println("我进来了");

HttpsURLConnectionImpl connection=(HttpsURLConnectionImpl)message.get("http.connection") ;

TrustManager[] myTMs = new TrustManager [] {

new MyX509TrustManager() };

SSLContext ctx = null;

try{

ctx = SSLContext.getInstance("SSL");

ctx.init(null, myTMs, new java.security.SecureRandom());

} catch (Exception e){ }

connection.setSSLSocketFactory(ctx.getSocketFactory());

connection.setHostnameVerifier(org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

// connection.setHostnameVerifier(hv);

System.out.println("我要出去了");

}

这样就可以直接调用服务了。

还有个想法是替换掉JaxWsProxyFactoryBean,实现自己的FactoryBean,这个没能实现,不知道各位看官有没有更好的想法呢?

java webservice 证书_java调用基于https的webservice(不生成密钥,基于spring配置,接收所有证书)...相关推荐

  1. WebService学习总结——调用第三方提供的webService服务

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据.气象中心的管理系统将收集 ...

  2. java跳过_java跳过https证书直接请求工具类

    /** * 过滤https协议 * @author edwin */ public class FiltratHttpsUtils { static HostnameVerifier hv = new ...

  3. asmx用java怎么调_java调用asmx的webservice

    eclipse插件(axis2 tool--Code Generator Wizard)实现Java调用 asmx 的Web Service 一个获得天气情况及国家城市的 Web Service ht ...

  4. java webservice 天气预报_java 调用天气预报的webservice | 学步园

    网上有很多例子,但我还是试了好多遍才走通,代码如下: import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; imp ...

  5. java sql函数_Java调用Sql存储过程实例讲解

    1.使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转 义序列.不带参数的 call 转义序列的语法如下所示: {call procedure-n ...

  6. java 绘图 打印_java调用本地打印机,绘制打印模板,小票模板

    文章目录 jar资源 绘制打印模板 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java ...

  7. 虹软java接摄像头_Java调用虹软SDK的错误

    虹软官网:https://www.arcsoft.com.cn/ 在用Java调用虹软SDK的时候需要注意的问题: 1.SDK版本 虹软的sdk分为LinuxX64.WindowsX86.Window ...

  8. java jama包_Java调用Jama包完成矩阵运算

    Java开发机器学习算法的时候,经常用到矩阵运算,我们可以调用Jama包来完成矩阵运算. Jama包下载地址:https://dl.pandaidea.com/jarfiles/j/Jama/Jama ...

  9. java sqlserver 异常处理_Java代码SSL https 加密连接 sqlserver

    3种连接sqlserver方式 URL 的区别: 1)jdbc:sqlserver://IP:port;DatabaseName=dbName;autoReconnectForPools=true; ...

最新文章

  1. 背包问题(多重背包+0-1背包)
  2. LeetCode 网易-2. 古老的游戏机
  3. 藏不住了,这就是阿里 AI 的真正实力!
  4. 《Ext JS权威指南》——1.2节JSON概述
  5. 货币市场基金的基本分类
  6. 贪心算法—圣诞老人的礼物(POJ 4110)
  7. 驾驭系统 做一个Windows XP的“***”(图)3
  8. NOIP2002-普及组复赛-第三题-选数
  9. hbase中为何不能向表中插入数据_Python自带的数据库,用起来真方便!
  10. qvodplayer.hta:按个人使用习惯自写易用的整合搜索资源的p2p电影搜索/播放程序(能自动升级)
  11. pycharm 修改darcual(暗黑)主题滚动条颜色
  12. 原生社区交友婚恋视频即时通讯双端APP源码ONE兔2.0版
  13. 《编程机制探析》第二章 计算机语言
  14. Excel图表制作(一):商务图表之甘特图
  15. Miracle密码算法开源库(十二)分析 :mrflsh3.c
  16. java faker_Java 生成测试字符串的库:Java Faker
  17. 云计算概念_云计算的概念
  18. 二维数组的四种创建方法
  19. 字体设计:拉丁字母字体书写方法分类
  20. powermock跳过某方法_如何使用powermock验证内部方法调用?

热门文章

  1. python3.7 安装pip3_Centos7 安装python3、pip3、ipython3
  2. 分子动力学模拟 心得 适合新手!!!
  3. SkeyeRTSPLive高效转码之SkeyeVideoEncoder高效硬件编码解决方案(附源码)
  4. js逆向案例-rus5逻辑学习
  5. C语言之static关键字详解
  6. 记我的一次腾讯外包面试
  7. 华三交换机开启telnet ssh https登陆方式
  8. 关于自律、自信、梦想、自由
  9. matlab截取左上四分之一,Excel求一组数据的四分之一分位数
  10. html_css_四分之一圆