• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Managed Beans и Java-агенты

  • Автор темы Автор темы Zeka
  • Дата начала Дата начала
Z

Zeka

Можно ли в ява-агенте использовать ява классы, что лежат не в Script Libraries, а в самом nsf? Как?

ПС: Надеюсь вопрос понятно объяснил? :)
 
Можно ли в ява-агенте использовать ява классы, что лежат не в Script Libraries, а в самом nsf? Как?
имхо - маловероятно.
можно конечно поковырять в направлении:
1. выяснить, как их грузит сам лотус: добавить в managed bean метод, возвращающий this.getClass().getClassLoader() .
2. попытаться инстанцировать указанный класслоадер в агенте и загрузить им требуемый класс.

навскидку, сложности могут возникнуть из-за того, что
- класслоадер для managed beans может лежать черте-где ( напр. в %lotushome%/xsp ) и не попадать в classpath агента.
- агент может работать в нормальной сессии, а класслоадер для managed bean наверняка использует веб-сессию.
- кухня, связанная managed beans возможно вообще не будет работать без osgi контейнера.
- lifecycle для бинов наверняка вопроизвести не получится
- ...

Если есть представление, где конкретно в nsf лежит код - можно написать собственный класслоадер :-)

P.S. А агент, случаем, не вебный? Если да - то можно сам агент заменить на
 
Сорри, так и думал, что "Managed Beans" в заголовке собъёт с толку...

Вобщем, надо обрабатывать все изменённые документы в базе.
Для этого сделал ЯваАгента, который "After document created or modified" эти документы и обрабатывает. В базе у меня есть несколько Managed Beans'ов и парочка вспомоготельных явовских класcов - Util, Log. Очень хотелось бы использовать эти Util и Log в моём агенте.
Сейчас я тупа скопировал эти класы в Script Libraries и добавил эту Script Library в ресурсы моего агента. Но держать один и тот же код в 2 местах, сами понимаете, не солидно:)

Вот и возник вопрос. Как из ЯваАгента использовать классы Util и Log, что лежат в самом nsf?
 
Сорри, так и думал, что "Managed Beans" в заголовке собъёт с толку...
...
Вот и возник вопрос. Как из ЯваАгента использовать классы Util и Log, что лежат в самом nsf?
Да я в принципе изначально понял, о чем речь. Все вышеизложенное применимо к вашему случаю - т.е. штатно вряд ли получится.

Однако, теоретически, задача решаемая. Ковырнул ради интереса:
Код:
Set nc = db.CreateNoteCollection(False)
nc.SelectMiscFormatElements = True
nc.SelectionFormula = {@Right( @GetField("$Title"); 5 ) = "class" }
вернет таки ноды, содержащие java классы из nsf ( аналогично можно вытянуть jar-ы, лежащие в WEB-INF/lib )
в $Title будет что-то типа "WEB-INF/classes/com/acme/Foo.class"
Вываливаем ноду в xml, и в /fileresource/filedatа будет лежать скомпилированный класс. Остается декодировать его из base64 в byte[] и можно кормить этим класслоадер...
 
Спасибо... Пускай уж лучше код дублируется, чем такие костыли ваять...
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Курс AD