gpt4 book ai didi

java - 动态 JDE 连接器增加句柄数的问题会导致 OutOfMemory,解决后会出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 22:34:16 24 4
gpt4 key购买 nike

我们正在尝试为 JDE9.0 使用动态 java 连接器,但面临着进程句柄数量增加的问题。

场景:

并行调用动态 JDE 连接器并同时进行多个调用。

执行BSFN的实现流程如下:

1)登录方法具有所有凭据并返回sessionID

int sessionID =   
Connector.getInstance().login(username.trim(), password.trim(), env.trim(), role.trim());

2) ExecuteBSFN 的输入参数为 module、bsfnName 和 inputfile(向 bsfn 输入数据)

…..

ExecutableMethod execMethod = bsfnMethod.createExecutable();
execMethod.resetValues();
Map<String, String> input = inputParams(moduleName, bsfnName, inputFile);

if(input != null)
execMethod.setValues(input);

CallObjectErrorList errorList = execMethod.executeBSFN(sessionID);
Map output = execMethod.getValues();
….

3)注销:

Connector.getInstance().logoff(sessionID);    

在这种情况下,我们观察到进程的句柄数不断增加,即使我们使用 logoff() 方法并最终导致 OutOfMemory。

为了解决注销实现中的这个问题,在注销后我们调用:

       Connector.getInstance().shutDown();

在这种情况下,我们观察到它会为后续调用抛出空指针异常。有谁知道如何克服这种情况?

最佳答案

您应该通过检查企业服务器 callobject 内核 jde 日志文件来检查从用户 session 调用的 BSFN 是否阻止注销,因为 BSFN 仍在企业服务器 callobject 内核中异步运行。

Connector.getInstance().shutDown();将迭代所有 Activity 用户 session 并调用 Connector.getInstance().logoff(sessionID);。

因此,如果有其他 Activity session 正在运行业务功能,shutDown将在BSFN执行过程中注销该 session ,并会导致注销 session 出现空指针异常。

关于java - 动态 JDE 连接器增加句柄数的问题会导致 OutOfMemory,解决后会出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58535004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com