我们正在尝试为 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();
在这种情况下,我们观察到它会为后续调用引发空指针异常。有谁知道如何克服这种情况?