[發明專利]在運行時對Java類進行注入的方法及裝置有效
| 申請號: | 201811188877.2 | 申請日: | 2018-10-12 |
| 公開(公告)號: | CN109445878B | 公開(公告)日: | 2023-05-23 |
| 發明(設計)人: | 易存道 | 申請(專利權)人: | 北京寶蘭德軟件股份有限公司 |
| 主分類號: | G06F9/448 | 分類號: | G06F9/448;G06F11/34 |
| 代理公司: | 北京路浩知識產權代理有限公司 11002 | 代理人: | 王瑩;李相雨 |
| 地址: | 100020 北京市朝*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 運行 java 進行 注入 方法 裝置 | ||
本發明實施例公開一種在運行時對Java類進行注入的方法及裝置,其中,方法包括:在Java項目運行時,獲取用戶通過指令所選擇的多元化組合配置;通過所述多元化組合配置,在當前加載類中篩選出符合規則類作為可注入Java類;若所述可注入Java類的數目未達到轉換數量閾值且當前系統資源充足,則將所述可注入Java類開始注入所述Java項目中,且注入成功的Java類立即生效。本發明實施例能夠在Java項目運行時,根據實時需求修改配置,在當前加載類中篩選出符合規則類作為可注入Java類進行注入,即修改其運行時字節碼加入業務所需采集邏輯,靈活可控不影響業務性能。
技術領域
本發明實施例涉及計算機技術領域,具體涉及一種在運行時對Java類進行注入的方法及裝置。
背景技術
Java項目中在對業務的監控或者數據采集的具體實現,可以通過多種方式達到對已有業務處理邏輯擴充,從而獲取所關注模塊或具體業務流程中的信息。如加入自身所需處理邏輯、修改已編譯字節碼文件或者通過動態代理模式等。
除上述方式借助JDK1.5引入的java?agent特性,可以通過在main方法執行之前自定義轉換器對將被加載的類字節碼做以修改或替換,從而使得虛擬機中加載到的類信息包含所需的監控或采集邏輯。
現有方式根據不同需求選取合適方式可以滿足較多數場景。但是,現有方式受制于實際運行情景或者實現方式的可行性,無法獲取到已有實現的源文件加以修改,或不能夠根據需求在不影響當前業務進行添加修改以及恢復已修改內容。
發明內容
由于現有方法存在上述問題,本發明實施例提出一種在運行時對Java類進行注入的方法及裝置。
第一方面,本發明實施例提出一種在運行時對Java類進行注入的方法,包括:
在Java項目運行時,獲取用戶通過指令所選擇的多元化組合配置;
通過所述多元化組合配置,在當前加載類中篩選出符合規則類作為可注入Java類;
若所述可注入Java類的數目未達到轉換數量閾值且當前系統資源充足,則將所述可注入Java類開始注入所述Java項目中,且注入成功的Java類立即生效。
可選地,用戶通過指令所選擇的多元化組合配置,包括:
對指定Java類的修改、恢復、功能開啟與否的配置;
根據類名規則、繼承關系以及訪問權限對Java類的篩選規則配置;
轉換數量閾值的配置;
多種功能Java類的求同存異配置。
可選地,所述方法還包括:
在將所述可注入Java類開始注入所述Java項目中時,若所述多元化組合配置與上一次多元化組合配置發生改變,綜合上一次多元化組合配置中注入的Java類和本次多元化組合配置中篩選出的可注入Java類,恢復不再符合本次多元化組合配置的類的修改,補充或者重新注入本次多元化組合配置所篩選出的Java類。
可選地,在若所述可注入Java類的數目未達到轉換數量閾值且當前系統資源充足,則將所述可注入Java類開始注入所述Java項目中,且注入成功的Java類立即生效之后,所述方法還包括:
將所述可注入Java類的注入進度、以及注入成功或失敗的結果展示給用戶。
第二方面,本發明實施例還提出一種在運行時對Java類進行注入的裝置,包括:
獲取模塊,用于在Java項目運行時,獲取用戶通過指令所選擇的多元化組合配置;
篩選模塊,用于通過所述多元化組合配置,在當前加載類中篩選出符合規則類作為可注入Java類;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京寶蘭德軟件股份有限公司,未經北京寶蘭德軟件股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811188877.2/2.html,轉載請聲明來源鉆瓜專利網。





