JAVA 和 WebService 那點(diǎn)事

一、前言
????最近公司項(xiàng)目中遇到要和某廠生產(chǎn)系統(tǒng)對接的需求,要求對接廠內(nèi)的ESB總線。需要使用到WebService的方式進(jìn)行推送數(shù)據(jù)。于是決定在此歸納整理一下WebService的簡單使用方法(只談快速使用)以及一些使用的坑點(diǎn)。
二、準(zhǔn)備工作
????idea 版本不限,我是用的是19.3(19.3永遠(yuǎn)的神),對接方提供的wsdl文件(如果是url的話直接下載)。
三、開始對接
????1,從idea中生成WebService對接需要的文件
???????? idea中可以根據(jù)(wsdl)直接生成用于調(diào)用WebService服務(wù)的文件,操作步驟如下
????????(1)選擇需要生成的目錄 右鍵->WebServices->Generate Java Code From Wsdl

第一步.png

????????(2)注意Web Service Platfrom 這一項(xiàng)需要選擇跟圖片中的一樣,點(diǎn)擊ok
第二步.png

????????(3)生成對應(yīng)代碼,生成后的樣子??梢愿鶕?jù)個人喜好刪除.class文件(編譯后的文件沒啥用),我們只需要關(guān)注繼承了 [javax.xml.ws.Service] 的這個類就可以了
第三步.png

????????(4)編寫測試方法,寫一個main方法調(diào)用WebService服務(wù)
第四步.png

成功調(diào)用.png

????????至此一個對接流程完成數(shù)據(jù)發(fā)送完畢。
四、使用中的麻煩
????1,部署問題,直接把生成的服務(wù)繼承進(jìn)系統(tǒng)并隨系統(tǒng)一同打包部署后發(fā)現(xiàn)直接報錯,找不到文件。這個問題需要修改繼承了Service類中的靜態(tài)方法
image.png

把wsdl文件放到服務(wù)器上后修改至對應(yīng)路徑。啟動項(xiàng)目測試發(fā)送數(shù)據(jù),完美解決問題
????2,使用定時任務(wù)驅(qū)動發(fā)送數(shù)據(jù),跟廠里對接數(shù)據(jù)都是定時發(fā)送的,剛開始啟動定時任務(wù)沒有問題,但是每當(dāng)運(yùn)行一段時間后就停止運(yùn)行。為此跑了好幾趟廠里也沒有解決問題。最后在互聯(lián)網(wǎng)沖浪的時候發(fā)現(xiàn)了一個帖子,內(nèi)容是介紹WebService的實(shí)現(xiàn)原理,【W(wǎng)eb Service也很容易部署, 因?yàn)樗鼈兓谝恍┏R?guī)的產(chǎn)業(yè)標(biāo)準(zhǔn)以及已有的一些技術(shù),諸如標(biāo)準(zhǔn)通用標(biāo)記語言下的子集XML、HTTP】稍加思考.jpg,擦有http。眾所周知java中的http請求如果不設(shè)置超時時間他會一直在哪掛著定時任務(wù)處于一個假死的狀態(tài)(死了但是沒有完全死),這樣導(dǎo)致了后面的所有都停了?,F(xiàn)在要做的就是給WebServcie 的http請求設(shè)置一個超時時間。只需要對我們調(diào)用的getHelloWorld中添加
image.png

BindingProvider bindingProvider = (BindingProvider) helloWorld;
Map<String, Object> requestContext = bindingProvider.getRequestContext();
requestContext.put("com.sun.xml.internal.ws.connection.timeout",20*1000);
requestContext.put("com.sun.xml.internal.ws.request.timeout",20*1000);

大家都是CV工程師我懂,文字版?。

再對我們調(diào)用的方法進(jìn)行一個異常捕獲處理,保存運(yùn)行日志、重新發(fā)送數(shù)據(jù)等。

新人一枚,文中若有錯誤或者不足希望大佬指正。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容