ABAP function group和Tomcat library重複載入問題
ABAP
ABAP help文件裡對**LOAD-OF-PROGRAM"的關鍵字是這樣描述的:
This event keyword defines the program constructor of an executable program, a module pool, a function group, or a subroutine pool. The program constructor is an event block whose event is raised by the ABAP-runtime environment when one of the executable programs mentioned above is loaded into the internal session.
以Function group為例,每當一個function group裡的任意一個function module第一次被呼叫時,對應的ABAP program被載入到internal session裡,同時ABAP執行時丟擲LOAD-OF-PROGRAM, 執行應用程式設計師編寫的事件處理邏輯。
現在我有一個名為ZTOMCAT的function group。其LOAD-OF-PROGRAM就負責彈出偵錯程式。
我有兩個report。Report 2的原始碼:
REPORT ZJERRY_RE2.
call FUNCTION 'ZTEST_FM_1'.
Report 1:
CALL FUNCTION 'ZTEST_FM_1'.
SUBMIT zjerry_re2 AND RETURN.
那麼我執行report1,斷點會觸發一次還是兩次?
答案是兩次。
LOAD-OF-PROGRAM在這種場景下的行為,ABAP help已經說的很清楚了:
When a program is called using SUBMIT or using a transaction code, a new internal session is opened in every call and the event block is executed once in every call.
每次program透過SUBMIT或者事務碼的方式呼叫時,會起一個新的internal session,在此新的session裡LOAD-OF-PROGRAM會觸發一次。
下圖也直觀表明了每次呼叫SUBMIT( calling programs)時會新起一個Internal Session。
Tomcat 庫檔案的重複載入問題
我的pom.xml裡定義了一個gson的依賴關係,ABAPer可以把其類比成在我的Java程式碼裡呼叫Google提供的gson API。
打成war包之後,該庫檔案位於WEB-INF/lib資料夾下。
那麼如果我有多個Web應用都用到了gson, 則每個應用的WEB-INF\lib資料夾下面都有gson的jar檔案。
問題:在執行時,Tomcat只會將一份gson.jar的內容載入到記憶體麼?
答案是不會。根據Tomcat的官方文件,Tomcat會為每個Web應用建立一個專屬的ClassLoader例項,每個應用的WEB-INF\lib下的資源,對於其他應用來說不可見,彼此隔離。
當然如果想只用一份庫檔案,可以把它放到目錄 [tomcat-installation-directory]/common/lib下面。更多細節參考stackoverflow上的討論.
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2156272/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- $(function(){}裡面方法不載入問題Function
- mysql order by 和 group by 順序問題MySql
- 探索RocketMQ的重複消費和亂序問題MQ
- Android studio glide包重複問題AndroidIDE
- max() group by共用問題
- webpack dll打包重複問題優化Web優化
- element UI元件樣式重複問題UI元件
- 資料檢視的重複問題
- 【java】ObjectOutputStream & ObjectInputStream 多次寫入發生重複寫入相同資料的問題JavaObject
- 【Azure Function】FTP上傳了Python Function檔案後,無法在門戶頁面載入函式的問題FunctionFTPPython函式
- 併發請求的重複插入問題
- 解決winform窗體重複建立問題ORM
- group by 使用的 as 同名問題!
- [BUG反饋]public function group() 方法缺少網頁標題賦值Function網頁賦值
- SQL -去重Group by 和Distinct的效率SQL
- vegetable one(tomcat問題)Tomcat
- MySQL order by limit 分頁資料重複問題MySqlMIT
- Vue echarts 繫結事件重複執行問題VueEcharts事件
- 快速解決mongodb出現id重複問題MongoDB
- 去除重複字母(不同字元的最小序列)問題字元
- 答讀者問:關於隱式 id 重複的問題
- RabbitMQ如何解決被重複消費和資料丟失的問題?MQ
- SDWebImage 載入https報錯 無法載入問題WebHTTP
- Fundamental Library for ABAP 主要的組成部分概述
- 解決Linq.ToDictionary()時的鍵重複問題
- 分散式重複提交問題架構設計思路分散式架構
- Openlayers4地圖重複出現的問題地圖
- SwipeRefreshView重複下拉重新整理操作閃退問題View
- 解決alertmanager重複傳送訊息的問題
- 解決生產日誌重複列印的問題
- 圖解tomcat類載入機制(tomcat7)圖解Tomcat
- socket 斷開和重連問題
- Tomcat類載入機制探析Tomcat
- Tomcat是如何載入類的Tomcat
- list is not in GROUP BY clause and contains nonaggre的問題AI
- 一次library cache lock 問題分析
- 解決:ThinkPHP 下載專案提示“Call to undefined function captcha_src()”問題PHPUndefinedFunctionAPT
- 07.Java類載入問題Java