我想知道在SAP内存中保留一个通过JCO调用的rfc是否可行,这样我就可以缓存内容了,这就是我想到的场景:
假设一个增加数字的简单函数。该函数从0开始,所以第一次用import参数1调用它时它应该返回1。
第二次我称之为它应该返回2,依此类推。
这与JCO有关吗?
如果我有函数对象并进行两次成功调用,则它总是返回1.
我可以做我想象的事吗?
答案 0 :(得分:1)
围绕某个连接的稳定性设计应用程序几乎不是一个好主意(除非您正在构建稳定性监视软件)。构建您的软件以使其正常工作,无论连接关闭和重新打开的频率如何,无论在服务器端初始化和销毁会话的频率如何。您可能希望使用数据库保留某个状态,或者您可能需要(或想要)使用系统提供的共享内存机制。所有这些对于RFC处理本身来说都是无关紧要的。
但是,请注意,您可能需要确保在单个上下文或“业务事务”中发生一系列调用。请参阅this question和我的答案以获取示例。这些上下文是短暂的,并允许您首先想要获得的内容 - 只要知道您不应该设计您的应用程序,以便它必须将这些上下文保持活动几分钟或几小时。
答案 1 :(得分:0)
答案是肯定的。为了使其工作,您需要执行两个任务:
示例代码:
JCoDestination dest = ...
JCoFunction func = ...
try{
JCoContext.begin(dest);
func.execute(dest); // Will return "1"
func.execute(dest); // Will return "2"
}
catch (JCoException e){
// Handle network problems, ABAP exceptions, SYSTEM_FAILUREs
}
finally{
// Make sure to release the stateful connection, otherwise you have
// a resource-leak in your program and on backend side!
JCoContext.end(dest);
}