亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

增量部署class文件引發(fā)的血案

lolomaco / 2612人閱讀

摘要:背景項目中通過遠(yuǎn)程調(diào)用服務(wù)框架調(diào)用了許多其它的服務(wù)其中有一個服務(wù)需要升級其升級不是版本上的升級而是整個服務(wù)重新取了一個名字使用的也是全新的包但是調(diào)用的方法沒有改變因此在升級時只是在調(diào)用服務(wù)類中修改了調(diào)用地址和調(diào)用返回實體由改為該中返回該調(diào)用

背景

項目中通過遠(yuǎn)程調(diào)用服務(wù)框架調(diào)用了許多其它的服務(wù),其中有一個服務(wù)wx/subscribe/contract/CircleService 需要升級,其升級不是版本上的升級,而是整個服務(wù)重新取了一個名字,使用的也是全新的jar包wuxian/social/contract/SocialService,但是調(diào)用的方法沒有改變,因此在升級時,只是在調(diào)用服務(wù)service類中修改了調(diào)用地址,和調(diào)用返回實體(由CircleService改為SocialService),該service中返回該調(diào)用實體使用的是static方法.修改完畢過后本地運行一切正常,于是將修改service的class文件以及對應(yīng)的jar包上到沙箱環(huán)境,并將沙箱環(huán)境中原來的CircleService jar包刪除,然后重啟,但是報錯了.代碼修改如下:

private static volatile CircleService subCircleService = null;
subCircleService = ProxyFactory.create(CircleService .class,"tcp://circle/CircleServiceImpl" );
public static CircleService getSubCircleService() {
        return subCircleService;
    }

修改為

private static volatile SocialService subCircleService = null;
subCircleService = ProxyFactory.create(SocialService.class,"tcp://social/SocialServiceImpl" );
public static SocialService getSubCircleService() {
        return subCircleService;
    }

其它地方的調(diào)用都是用類名+方法名(SCFService.getSubCircleService())的方式訪問,故此,在修改時只改動了這個文件,其它文件都沒有修改,增量上線的時候也只上線該文件即可.

報錯現(xiàn)象

重啟服務(wù)器的時候無法啟動服務(wù),一直報如下錯誤

錯誤內(nèi)容為找不到wx/subscribe/contract/CircleService這個jar包提供的方法,很奇怪為什么會提示這個錯誤,剛開始懷疑是上線的class文件有問題,沙箱上部署class文件沒有成功,還是原來的文件,所以又部署了一次,但是還是報同樣的錯誤.

解決過程

將部署到沙箱上的文件下載下來,進(jìn)行反編譯,看引用中是否存在CircleService相關(guān)的jar包應(yīng)用,結(jié)果反編譯后,發(fā)現(xiàn)報錯的文件中都沒有CircleService相關(guān)的jar包引用,于是在cmd窗口中使用javap編譯class文件

javap -v xx.class > D:/result.txt

使用該命令后,在result.txt中的常量池中,驚人的發(fā)現(xiàn)居然還有引用CircleService相關(guān)jar包的行

故此解開了為何代碼中為何會報上述錯誤的問題,于是將雖然代碼沒有改動,但是重新編譯過后的class文件上到沙箱,重啟,結(jié)果果然沒有報錯了,于是上線.但是上線過后才發(fā)現(xiàn),其它類在訪問時候才會調(diào)用該方法的類依舊會報上述錯誤,于是重新檢查了一遍所有引用過上述修改過的方法的類,將重新編譯過后的文件都上線,才解決了報錯的問題,這就是增量上線class文件引發(fā)的一起血案.

思考

我們觀察在在上述報錯中,報錯內(nèi)容為NoSuchMethodError,而不是ClassNotFound,這是為什么呢?在其它代碼引用上述修改的方法時,都是通過SCFService.getSubCircleService()的方式調(diào)用,而沒有寫返回類,在調(diào)用上述方法時,老的class文件常量池中,getSubCircleService()返回的是CircleService方法,而新上線的SCFService中該方法的返回值已經(jīng)修改為SocialService,故此會先報NoSuchMethodError錯誤.
這種錯誤類似于我們在常量類中定義

public static final CONST = 100;

后,要修改常量CONST值為1000后,只增量上線了該常量class文件,而其它引用該常量的類的文件都更新上線所引發(fā)的CONST依舊為100的問題.

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/70417.html

相關(guān)文章

  • 記一次Content-Length引發(fā)血案

    摘要:除非使用了分塊編碼,否則首部就是帶有實體主體的報文必須使用的。 背景 新項目上線, 發(fā)現(xiàn)一個奇怪的BUG, 請求接口有很小的概率返回400 Bad Request,拿到日志記錄的請求的參數(shù)于POSTMAN中測試請求接口, 發(fā)現(xiàn)能夠正常響應(yīng). 排查過程 首先服務(wù)器能夠正常響應(yīng)400 Bad Request, 排除接口故障問題. 對比日志過程中發(fā)現(xiàn) { hello:world ...

    thekingisalwaysluc 評論0 收藏0
  • 一道JS面試題引發(fā)血案

    摘要:項目組長給我看了一道面試別人的面試題。打鐵趁熱,再來一道題來加深下理解。作者以樂之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVbur0z?w=600&h=400); 剛?cè)肼毿鹿?,屬于公司萌新一枚,一天下午對著屏幕看代碼架構(gòu)時。BI項目組長給我看了一道面試別人的JS面試題。 雖然答對了,但把理由說錯了,照樣不及格。 ...

    fantix 評論0 收藏0
  • 一個由“大頭兒子帶小頭兒子吃飯”引發(fā)血案

    摘要:在群里討論,然后得出了這幾種寫法,感覺是層層遞進(jìn),想了想,最后選擇發(fā)布成文章大頭兒子小頭爸爸叫去吃飯大頭兒子小頭爸爸叫去吃飯大頭兒子小頭爸爸叫去吃飯吃完了背小頭兒子回去正在牽著的手正在吃給所有對象擴(kuò)展一個繼承的方法繼承爸爸要繼承人的功能正在 在群里討論JavaScript,然后得出了這幾種寫法,感覺是層層遞進(jìn),想了想,最后選擇發(fā)布成文章 ({ baby : 大頭兒子, ...

    forrest23 評論0 收藏0
  • 在PHP應(yīng)用程序開發(fā)中不正當(dāng)使用mail()函數(shù)引發(fā)血案

    摘要:在我們向廠商提交漏洞,發(fā)布了相關(guān)的漏洞分析文章后,由于內(nèi)聯(lián)函數(shù)導(dǎo)致的類似安全問題在其他的應(yīng)用程序中陸續(xù)曝出。淺析的函數(shù)自帶了一個內(nèi)聯(lián)函數(shù)用于在應(yīng)用程序中發(fā)送電子郵件。 前言 在我們 挖掘PHP應(yīng)用程序漏洞 的過程中,我們向著名的Webmail服務(wù)提供商 Roundcube 提交了一個遠(yuǎn)程命令執(zhí)行漏洞( CVE-2016-9920 )。該漏洞允許攻擊者通過利用Roundcube接口發(fā)送一...

    Galence 評論0 收藏0
  • 空數(shù)組返回true引發(fā)血案

    摘要:但是在這個判斷的情況下,則會很神奇的發(fā)現(xiàn)打印出來了,說明此時為,為什么呢因為這里執(zhí)行了一個對象到布爾值的轉(zhuǎn)換故返回。 ????之前做項目的時候,總會處理各式各樣的數(shù)據(jù),來進(jìn)行繪圖。但是當(dāng)后臺返回一個空數(shù)組的時候,頁面中并不會顯示沒有數(shù)據(jù)的圖。代碼如下: var arr = [] if(arr){console.log(124)}else{console.log(無數(shù)據(jù))} 我明明判斷了...

    piglei 評論0 收藏0

發(fā)表評論

0條評論

lolomaco

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<