Мы пытаемся использовать динамический Java-коннектор для JDE9.0 и сталкиваемся с проблемой увеличения числа дескрипторов для процесса.
Сценарий:
Вызов динамического JDE-соединителя параллельно с несколькими вызовами одновременно.
Процесс реализации BSFN выглядит следующим образом:
1) Метод входа имеет все учетные данные и возвращает sessionID
int sessionID =
Connector.getInstance().login(username.trim(), password.trim(), env.trim(), role.trim());
…
2) ExecuteBSFN имеет входные параметры в виде модуля, 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();
В этом случае мы наблюдали, что на нем выдается исключение нулевого указателя для последующих вызовов. Кто-нибудь знает, как преодолеть эту ситуацию?