【java SOAP】对SOAP的一个个人印象
開這個坑源于我現在做的一個項目用到了SOAP。關于SOAP的知識我就不做詳細介紹了。我也沒有開發過SOAP服務端, 只是要用到客戶端。
作為一個意識流選手,我大概說一下我工作過程中對SOAP的印象。
1、 SOAP的出現是為了解決跨平臺的問題。比如java調用一個c#或者php寫的服務
2、 數據傳輸是基于xml的。上一點說到是為了解決跨平臺的問題,但是很蛋疼的是,并沒有很嚴格的標準去規定xml的數據格式。導致這個標準并不是唯一的。這就非常操蛋了。逆向生成的代碼經常沒用,甚至使用逆向工具的時候偶爾還會報錯(我這個項目還有一點別的原因)。
3、我用Eclipse根wsdl生成的客戶端訪問SOAP服務特別慢。而且并不是服務端的問題。我用 TCP Monitor 截獲了請求,數據返回特別快20ms左右,但是客戶端把返回數據處理成相應的bean特別慢。導致整個調用花費了1分鐘
4、有很多手寫客戶端的辦法。但是我覺得都太麻煩了。而且像Axis2我不知道為什么從Maven下載依賴下不下來,javax有一個對soap的支持,但是在一些java版本移來移去,java8是有的,java9就移除了。
5、于是我開始自己琢磨在現有的基礎上寫一個通用的方法去構造請求的內容。一開始想用Axis2,上面說了,下載不下來。。然后就用javax的soap。發現很不靈活,湊不出我項目里要的格式。然后還想過直接用StringBuilder,但是很不好用。最后選擇了Dorm4j + javax自帶的soap
? 說到我工作用到的SOAP server。那還是大佬十年前寫的,真的很佩服,他們沒有什么工具。完全用C根據SOAP協議寫了一個SOAP Server。真的是強, 里面的源碼是完完全全地對字符串的解析,膜拜大佬。但是估計是只對C#調用做了很多測試。C#的客戶端調用特別快。我現在要用java調用,逆向生成的代碼把數據傳過去有一部分是解析不到的。我現在就是想辦法把java調用時的數據做成跟C#調用的數據寫成一樣的。
?
總結
以上是生活随笔為你收集整理的【java SOAP】对SOAP的一个个人印象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚拟机搭建DHCP服务器
- 下一篇: vue input 赋值无效