文档章节

记一次webservice使用java连接的basic验证问题的坑

heavenCoder
 heavenCoder
发布于 2018/12/24 10:47
字数 811
阅读 22
收藏 0

我们做了一个通用型的api平台,给全公司的接口使用。很多接口陆陆续续接入了,还面临一个问题,就是目前的代码对使用basic验证的webservice接口无法验证身份。拥有这方面需求的业务开发团队对我们架构组提出了强烈的呼吁,上周五领导让我做一下,凝练起来就三个字,搞定它

没成想,一开始就钻进了牛角尖,在死胡同了团团转出不来。先是研究wsdl4j的jar,发现没有对basic验证的支持,再研究一遍soapui的jar,发现它仅仅是传入了用户名密码,在实际连接读取wsdl的时候,也没有传入用户名密码。研究了半下午之后,陷入死局,遂展现如下坑逼方案:

1.抽取wsdl4j的代码,自己复写,然后打包放进去。写着写着,发现wsdl4j的类,很多不是final就是protect包范围内可用的,要重新写一遍,类太多了,而且会破坏掉原有的线程安全设置。

2.摧毁上个方案的代码,开始使用ASM字节码改动原始代码,自己实现AOP。后来发现,即使如此,具体连接的时候仍然会扔出来401错误,只不过结果是正确的而已。

3.摧毁第二个方案的代码,重新开始研究soapui的jar。总觉得它使用的方式,一定是java允许的,而且是很方便的方式。发现内部有从url中获取用户名密码的方式,遂各种实验。最后虽成功,但是看着拼接起来带着用户名密码的url,内心总有一种哔了狗的感觉,这无法通过我内心的代码洁癖认证。

周五就这样结束了,带着一脸的懵逼和惆怅,周末带带孩子以求内心安宁。

周一开始了,脑袋焕新,突然想起自己以前写的动态客户端访问webservice组件,遂拉出来鞭尸,以求能找到蛛丝马迹。拖出来自己的代码一看,突然明白了牛角尖钻在哪里了。我的动态客户端组件,使用的是java.net.Authenticator来设定用户名密码,丢进jvm之后就不用管了,后面正常连接即可。

刹那即永恒。于是摧毁上周五一个下午的所有工作量,分分钟写好自定义的Authenticator类,在访问之前把用户名密码丢进去,成功!

这样就over了。

其实很多看似复杂的问题,往往是想得太复杂了。有时候命名你知道的东西,一入牛角尖,万事皆蹉跎。吸取教训,吸取教训。

© 著作权归作者所有

heavenCoder
粉丝 6
博文 7
码字总数 7581
作品 0
杭州
私信 提问
HttpClient在多线程环境下踩坑总结

HttpClient在多线程环境下踩坑总结 问题现场 在多线程环境下使用HttpClient组件对某个HTTP服务发起请求,运行一段时间之后发现客户端主机CPU利用率呈现出下降趋势,而不是一个稳定的状态。 ...

优惠券发放
03/28
0
0
jaxws-webservice编程(第一个记录)

随着近几年来,SOA,EAI等架构体系的日渐成熟,Webservice越来越炽手可热,尤其是在企业做异质平台整合时成为了首选的技术。 Java的Webservice技术更是层出不穷,比较流行的有:Axis2,Sprin...

heroShane
2014/02/28
2.3K
0
使用 RMI + ZooKeeper 实现远程调用框架

在 Java 世界里,有一种技术可以实现“跨虚拟机”的调用,它就是 (Remote Method Invocation,远程方法调用)。例如,服务A 在 JVM1 中运行,服务B 在 JVM2 中运行,服务A 与 服务B 可相互进...

黄勇
2014/11/15
11.7K
49
『OGG 02』Win7 配置 Oracle GoldenGate Adapter Java 踩坑指南

上一文章 《Win7 配置OGG(Oracle GoldenGate).docx》定下了 两个目标: 目标1: 给安装的Oracle_11g 创建 两个用户 admin 和 root 。 admin 对应了 ADMIN 结构,创建了一个 TB_ TEST表。 ro...

InkFx
2018/06/30
0
0
Java开发基础(二)——JDBC的使用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/simonforfuture/article/details/90409979 文章目录 前言 Java开发中...

simon曦
05/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

浅谈Visitor访问者模式

一、前言 什么叫访问,如果大家学过数据结构,对于这点就很清晰了,遍历就是访问的一般形式,单独读取一个元素进行相应的处理也叫作访问,读取到想要查看的内容+对其进行处理就叫作访问,那么...

青衣霓裳
36分钟前
6
0
JS内嵌多个页面,页面之间如何更快捷的查找相关联的页面

假设parent为P页面, P页面有两个子页面,分别为B页面和C页面; B页面和C页面分别内嵌一个iframe,分别为:D页面和E页面 现在通过B页面的内嵌页面D的方法refreshEpage(eUrl)来加载内嵌页面E的内容...

文文1
37分钟前
7
0
Hibernate 5 升级后 getProperties 错误

升级到 Hibernate 5 后,提示有错误: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map; 完整的错误栈为: java.lang.NoSuchMethodError: org.hibernate......

honeymoose
38分钟前
6
0
mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
41分钟前
7
0
Spring中BeanFactory与FactoryBean的区别

在Spring中有BeanFactory和FactoryBean这2个接口,从名字来看很相似,比较容易搞混。 一、BeanFactory BeanFactory是一个接口,它是Spring中工厂的顶层规范,是SpringIoc容器的核心接口,它定...

大王叫下
44分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部