• 📣 БЕСПЛАТНЫЙ ВЕБИНАР WAPT & SQLiM: взламываем веб как профессионалы. Ждем вас 3 апреля 19:00 (МСК). регистрация здесь. Что разберём: Поиск уязвимостей через фаззинг, Реальные SQL- и командные инъекции (с выводом RCE), Эскалация привилегий после взлома, Разбор похожих задач из курсов WAPT и SQLiM.

    >>> Подробнее <<<

Как победить ошибку с ls2j

  • Автор темы Автор темы Gandliar
  • Дата начала Дата начала
  • Теги Теги
    ls2j

Gandliar

Lotus Team
16.02.2004
582
26
BIT
261
Добрый день!

Есть простая функция

Код:
%Include "lsxsd.lss"
UseLSX "*javacon"
Use "utilsJava"


Function getTmpDir() As String
    On Error GoTo ErrorHandler
    Dim jSession As New JavaSession
    Dim jClass As JavaClass
    Set jClass = jSession.Getclass("utils")
    Dim jObject As JavaObject
    Set jObject = jClass.Createobject()
    getTmpDir = jObject.getTmpDir()   
 Exit function

и код на java в библиотеке utilsJava

Код:
public class utils {
    public static String getTmpDir() {
        String tempdir = System.getProperty("java.io.tmpdir");
        String sep = System.getProperty("file.separator");
        return !tempdir.endsWith(sep) ?  tempdir.concat(sep) : tempdir;   
    }   
}

С какого то момента (после перезагрузки компьютера) поведение:

1. Если функция вызывается из формы открытой через NotesUIWorkspace.EditDocument - Ошибка LS2J: исключительная ситуация java.lang.ClassNotFoundException: utils
2. Если функция вызывается через агент - все работает
3. Если функция вызывается через форму созданную через compose - работает. После первого такого вызова начинает работать и пункт 1, до перезагрузки клиента лотус.

Как победить ошибку в пункте 1? До сегодняшнего дня работало, теперь перестало. Вариант переписать все вызовы функций в форме на агенты - печальный.

Помогите, пожалуйста.
 
Пока помогло добавление в скрипт базы данных Use "utilsLib", в которой находится искомая функция getTmpDir
 
где, на форме, используется Use... ?
В форме используется Use... и на форме в хот-спотах вызываются функции из подключенной библиотеки.
Обычно новый документ создается в бакэнде и открывается методом notesuiworkspace.editDocument
сегодня функции которые использовали библиотеку обертку для вызова java функций в этом контексте стали выдавать ошибку.
причем при запуске той же функции агентом ошибки нет, при открытии формы из дизайнера на просмотр ошибки нет, более того после первого вызова функции, она видимо кэширует обращение к java и корректно работает до перезагрузки.

помогло решить проблему добавление use ... библиотеки в раздел databasescript базы данных
 
В форме используется Use... и на форме в хот-спотах вызываются функции из подключенной библиотеки.
Обычно новый документ создается в бакэнде и открывается методом notesuiworkspace.editDocument
сегодня функции которые использовали библиотеку обертку для вызова java функций в этом контексте стали выдавать ошибку.
причем при запуске той же функции агентом ошибки нет, при открытии формы из дизайнера на просмотр ошибки нет, более того после первого вызова функции, она видимо кэширует обращение к java и корректно работает до перезагрузки.

помогло решить проблему добавление use ... библиотеки в раздел databasescript базы данных
в агенте - явная инициализация...
на форме юз дб в глобальной секции (а не в хотспотах и т.п.)
 
в агенте - явная инициализация...
на форме юз дб в глобальной секции (а не в хотспотах и т.п.)
use всегда в глобальной секции.
просто сегодня столкнулся с тем, что в конкретном контексте перестало работать (в форме открытой по notesuiworkspace.editDocument)
админы говорят ничего не меняли, но была глобальная перезагрузка компов.
пробовали переподписать код, под разными пользователями...
 
use всегда в глобальной секции.
просто сегодня столкнулся с тем, что в конкретном контексте перестало работать (в форме открытой по notesuiworkspace.editDocument)
админы говорят ничего не меняли, но была глобальная перезагрузка компов.
пробовали переподписать код, под разными пользователями...
ECL мог отвалиться
+пересохранить надо форму - там есть херь, если менялся код форма может не подхватывать
 
ECL мог отвалиться
+пересохранить надо форму - там есть херь, если менялся код форма может не подхватывать
пересохранял, переподписывал весь код и отдельную форму делал с одной простой функцией.
вот то что ECL мог отвалиться, похоже, а как бы это проверить?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!