`
JerryWang_SAP
  • 浏览: 1030989 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

 
 
0
0
分享到:
评论

相关推荐

    abap 函数大全 abap function

    3. 报表生成:在ABAP中,有专门的函数模块用于生成报表,如FUNCTION GROUP 'SMARTFORMS'中的函数模块,可以创建复杂的打印输出和电子文档。此外,FUNCTION MODULE 'WRITE_TO_OUTPUT_AREA'可以将数据写入屏幕输出,...

    ABAP function使用笔记

    ### ABAP Function 使用笔记 #### 1. CONVERSION_EXIT_ALPHA_INPUT **功能描述:** 此函数模块用于将字母数字类型的输入转换为纯文本格式。它主要用于处理非数值型数据对象的转换。 **输入参数:** - `input`: ...

    ABAP Library

    ABAP(Advanced Business Application Programming)是SAP公司开发的一种编程语言,主要...综上所述,“ABAP Library”这个资源可能涵盖了以上所有ABAP相关的知识,对于学习和提升ABAP编程技能是非常宝贵的参考资料。

    [ABAP]Function实现ALV Table 二:ALV的弹出窗口形式

    总结起来,通过正确使用ABAP的Function模块和适当的回调处理,我们可以创建具有弹出窗口形式的ALV,以灵活地展示和操作业务数据。这不仅提高了用户体验,还使得SAP系统的报表功能更加强大和易用。

    ABAP调用函数自动填充模式

    在实际应用中,这样的功能可以通过使用ABAP编程语言中的类和方法来实现,比如通过继承和扩展ABAP编辑器的标准类,然后重写某些方法来添加自定义行为。例如,可以使用CL_ABA_EDITING_SERVICE类,它是ABAP编辑器的核心...

    ABAP-ALV进阶

    "ABAP-ALV进阶知识点详解" ABAP-ALV进阶是指在SAP系统中使用ABAP语言开发的高级列表查看器(ALV)。ALV是SAP系统中心的列表标准,可以在ABAP程序中进行报表输出。下面是ABAP-ALV进阶的知识点详解: 一、ALV概要 ...

    ABAP 函数介绍

    在 ABAP 中,异步调用可以使用 CALL FUNCTION 语句实现,例如: ```abap CALL FUNCTION 'ZSD_ZK03' IN UPDATE TASK. ``` 这条语句将异步调用 ZSD_ZK03 函数模块,并在 Commit Work 语句执行后执行。 1.1 本地异步...

    [SAP ABAP开发技术总结]ALV详解(Fuction ALV 和OO ALV)

    [SAP ABAP开发技术总结]ALV详解(Fuction ALV 和OO ALV) 图文并茂,详细介绍了Fuction ALV 和OO ALV的相关开发 [SAP ABAP开发技术总结]ALV详解:Function ALV(一) [SAP ABAP开发技术总结]ALV详解:Function ALV...

    abap-ALV.rar_ABAP系统ALV_abap_abap开发alv

    在ABAP中,ALV(ABAP List Viewer)是一种强大的工具,用于显示和处理数据表。ALV提供了一种标准化的方式来展示表格数据,包括排序、过滤、分组和自定义列等功能,极大地简化了用户界面的开发。 标题“abap-ALV.rar...

    How to Handle ABAP Function Parameters in Java.7z

    本文将详细探讨如何在Java中处理ABAP RFC(Remote Function Call)函数的参数。 首先,我们需要了解ABAP RFC的基本概念。RFC是一种在不同系统之间调用ABAP功能模块的技术,允许外部系统(如Java应用)与SAP系统进行...

    ABAP开发规范和命名规则

    ABAP开发规范和命名规则是IBM提供的一套开发标准和命名惯例,为ABAP开发者提供了详细的开发指南和命名规则,以确保开发的程序代码质量和可读性。本文将对ABAP开发规范和命名规则进行详细的解释和说明。 一、文档...

    SAP_ABAP_4.7.rar_SAP abap4_abap_abap chm_abap 4_abap4

    ABAP 4.7引入了类和对象的概念,支持继承、封装和多态性,这使得代码可维护性和复用性大大提升。 5. 功能模块和库: 功能模块是预定义的程序单元,可以被其他程序调用。ABAP库则包含一组相关功能模块,用于特定的...

    ABAP-OOP-Library, 面向对象的编程库.zip

    ABAP-OOP-Library, 面向对象的编程库 ABAP对象定位程序库安装手动创建下面列出的字典类型使用基于源类编辑器和常规编辑器来导入所有类。接口和程序。某些软件包使用邮件类。 这些消息保存在。messageclass 。txt文件...

    Remote Function Calls in ABAP

    Remote Function Calls (RFC)在ABAP中是一种关键的技术,它允许不同系统间的SAP组件进行通信,例如在R/3系统、NetWeaver或其他SAP技术平台之间。本培训课程"Remote Function Calls in ABAP"旨在教授开发人员如何有效...

    ABAP 调用ABAP PROXY

    2. **生成Proxy代码**:在目标系统中,使用SE80事务码,通过“生成ABAP Proxy”功能,输入源系统的服务接口信息,自动生成对应的ABAP Proxy类和相关代码。 3. **编译与激活**:生成的Proxy代码需要在目标系统中进行...

    ABAP 面试问题及答案

    以下是 ABAP 面试问题及答案,涵盖了锁对象、Function Module、ABAP 内存、授权对象、修改、修改助手、功能模块出口、事务变式等知识点。 锁对象(Lock Object) 锁对象是一種机制,用于控制对某个数据的访问。...

    SAP ABAP 开发环境和开发工具介绍

    SAP ABAP 开发环境和开发工具介绍 SAP ABAP 开发环境和开发工具是 SAP 系统中最重要的组件之一,它提供了一个强大的开发平台,允许开发者创建、测试和部署 ABAP 程序。ABAP 是 SAP 系统中的主要编程语言,用于开发...

    ABAP字符串SQL Functions语法总结

    值得注意的是,虽然可以跨Client操作,但这种方法并不推荐,因为它可能涉及数据安全性和性能问题。如果需要跨Client操作,建议先了解并评估可能的风险。 其次,关于SQL语句中的变量声明,之前在ABAP中,可以不使用...

Global site tag (gtag.js) - Google Analytics