JWS-Exception
1、javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching localhost found
使用localhost作为域名,SSL校验时报错,允许localhost认证,加入以下静态代码块:
static {//for localhost testing onlyjavax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier(){public boolean verify(String hostname,javax.net.ssl.SSLSession sslSession) {if (hostname.equals("localhost")) {return true;}return false;}});}
参考: https://www.mkyong.com/webservices/jax-ws/java-security-cert-certificateexception-no-name-matching-localhost-found/
2、Caused by: java.net.SocketException: Unexpected end of file from server
由于JWS服务使用https协议,但是客户端调用时使用时,URL中配置的非https协议,服务器端没响应任何数据,而是直接和客户端进行挥手,服务器端主动断开链接。
解决:URL的链接使用https
3、Caused by: 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
代码方式:客户端无法校验单向的https服务器安全性,需要客户端主动设置服务器端https校验的keystore.
public static void loadTrustStore() {System.setProperty("javax.net.ssl.trustStore", "E:/client.keystore"); //(truststore)System.setProperty("javax.net.ssl.trustStorePassword", "12345678"); //(truststore 密码 )System.setProperty("javax.net.ssl.trustStoreType", "JKS"); //(truststore 类型 )}
命令行方式:WsImport导出客户端wsdl
java -classpath "E:\programs\java\jdk1.8.0_151\lib\tools.jar" -Djavax.net.ssl.trustStore="E:/client.keystore
" -Djavax.net.ssl.trustStorePassword=12345678 com.sun.tools.internal.ws.WsImport https://localhost:9090/service/sayHi
?wsdl -s . -p com.shu.jwsclient.say -XdisableSSLHostnameVerification
参考:https://stackoverflow.com/questions/36316716/wsimport-unable-to-find-imported-certificate
示例:客户端调用https服务器的jws服务:
package com.shu.jwsclient.say;import java.net.MalformedURLException;
import java.net.URL;
import java.util.GregorianCalendar;import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;/*** 客户端调用服务器端方法** @author: jiangshubian* @Description:* @Date: Create in 2018-01-14 15:26* @Version: 1.0.0*/
public class JWSClientInvoker {static {//for localhost testing onlyjavax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier(){public boolean verify(String hostname,javax.net.ssl.SSLSession sslSession) {if ("localhost".equals(hostname)) {return true;}return false;}});}public static void main(String[] args) throws DatatypeConfigurationException {loadTrustStore();
// runerTest();runnerWithoutWSFile();}private static void runerTest() throws DatatypeConfigurationException {SayHiService sayHiService = new SayHiServiceImpService().getSayHiServiceImpPort();//invoke sayNothing methodsayHiService.sayNothing();//invoke saySomething methodsayHiService.saySomething("Something...");//invoke checkTime methodGregorianCalendar calender = new GregorianCalendar();calender.setTime(new java.util.Date(System.currentTimeMillis()));XMLGregorianCalendar xmldate = DatatypeFactory.newInstance().newXMLGregorianCalendar(calender);System.out.println(sayHiService.checkTime(xmldate));}private static void runnerWithoutWSFile() {URL url = null;try {url = new URL("https://localhost:9090/service/sayHi?wsdl");} catch (MalformedURLException e) {e.printStackTrace();}QName qname = new QName("http://say.jws.shu.com/", "SayHiServiceImpService");Service service = Service.create(url, qname);SayHiService sayHi = service.getPort(SayHiService.class);sayHi.sayNothing();sayHi.saySomething("runnerWithoutWSFile");}public static void loadTrustStore() {System.setProperty("javax.net.ssl.trustStore", "E:/client.keystore"); //(truststore)System.setProperty("javax.net.ssl.trustStorePassword", "12345678"); //(truststore 密码 )System.setProperty("javax.net.ssl.trustStoreType", "JKS"); //(truststore 类型 )}}
JWS-Exception相关推荐
- FineReport中以jws方式调用WebService数据源方案
在使用WebService作为项目的数据源时,希望报表中也是直接调用这个WebService数据源,而不是定义数据连接调用对应的数据库表,这样要怎么实现呢? 在程序中访问WebService应用服务, ...
- Java实现JWS生成与验签
前言 接了大组织的对接需求,需要对面要求采用jws方式生成签名和签名验证. ps: JWT(json web token)是设计一种简洁,安全,无状态的token的实现,通常用于网络请求方和网络接收方 ...
- 关于 JWT、JWS、JWE
JWT(JSON Web Token) JWT 是一个字符串,表示了一组字段声明的集合,以 JSON 格式组织数据,并以 JWS 或 JWE 方式编码. JWT 由 Header.Payload.Si ...
- JWS实现WebService
WebService估计大家都有听过或者使用过.Java有几种常用的方式实现webservice,本文主要是讨论JWS实现. 什么是webservice 简单而言,webservice ...
- java jws web_java 用jws发布一个简单的webservice
第一步: 定义一个简单webservice接口 package Interface; import javax.jws.WebParam; import javax.jws.WebService; @ ...
- JWT,JWE,JWS和RSA2
JWT,以及与JWS和JWE之间的关系 简而言之,JWT是一种安全规范,主要用于在双方之间传递安全数据.而JWS和JWE是实现安全传输的两种方式,JWS用于对传输报文的签名与验签,JWE用于对敏感数据 ...
- Exception in thread main java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static;只能在静态类型或顶级类型中才能声明静态方法
Exception in thread "main" java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static:只能在静态类型或顶级类型中才 ...
- Rendering Problems Exception raised during rendering:
问题 : Rendering Problems Exception raised during rendering:×× 问题解决方法: 把Text 切换Design界面 降低api的版本即可 操作如 ...
- Java基础(七)--Exception异常处理
发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...
- 【MongoDB异常】Exception authenticating MongoCredential解决方法
我们通过ideal编辑器编辑 springboot时候,出现这个错误: com.mongodb.MongoSecurityException: Exception authenticating Mon ...
最新文章
- 从0到1,苏宁API网关的演进之路
- 初级程序员常犯错误一览
- Java Web技术经验总结(二)
- JRE System Library、Referenced Libraries、Web App Libraries的含义
- mysql优化器分析器_MySQL查询优化器的概念和原理整个执行过程
- 并发执行变成串行_网易Java研发面试官眼中的Java并发——安全性、活跃性、性能...
- iris流程图_GitHub - LeoIris/vue: vue源码逐行注释分析+40多m的vue源码程序流程图思维导图 (diff部分待后续更新)...
- 微信小程序踩坑- tabBar.list[3].selectedIconPath 大小超过 40kb
- 翻翻git之---炫酷的自己定义翻滚View TagCloudView
- Linux搭建测试环境详细步骤
- [No000030]程序员节发点别的:中国教育整个把人脑子搞坏了-易中天
- 怎样搭建serveru ftp个人服务器
- 又现信息泄露事 融云通讯安全守护之道
- OpenLayer学习之style样式的学习笔记
- 改变 el-dialog 的宽度
- 9、刷牛客网SQL题(三)
- 基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案
- 编译原理三大圣书——龙书、虎书、鲸书
- matplotlib.pyplot.imshow opencv.imread 图片显示 图片读取
- 线段树的建树 单点修改 区间查询
热门文章
- 这些年,微信产品经理做过的无奈妥协。
- oracle rebuild online,rebuild online 请慎用
- 计算机无法关闭密码保护共享,xp系统怎么关闭密码保护共享
- Not creating XLA devices, tf_xla_enable_xla_devices not set错误求助
- kd树 python实现_Python - KDTree 实现
- 使用Navicat导入.sql文件(适合新手)
- matlab 行 读取文件 跳过_MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)...
- ThinkPad E450 进入dos界面快捷键 按F1
- 多元有序logistic回归分析_多元Logistic_回归分析解析.ppt
- idea设置黑色经典样式Darcula