Managed Beans И Java-агенты

Тема в разделе "Lotus + Java + LS2J", создана пользователем Zeka, 16 янв 2012.

  1. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Можно ли в ява-агенте использовать ява классы, что лежат не в Script Libraries, а в самом nsf? Как?

    ПС: Надеюсь вопрос понятно объяснил? :)
     
  2. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    имхо - маловероятно.
    можно конечно поковырять в направлении:
    1. выяснить, как их грузит сам лотус: добавить в managed bean метод, возвращающий this.getClass().getClassLoader() .
    2. попытаться инстанцировать указанный класслоадер в агенте и загрузить им требуемый класс.

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

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

    P.S. А агент, случаем, не вебный? Если да - то можно сам агент заменить на XAgent
     
  3. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Сорри, так и думал, что "Managed Beans" в заголовке собъёт с толку...

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

    Вот и возник вопрос. Как из ЯваАгента использовать классы Util и Log, что лежат в самом nsf?
     
  4. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Да я в принципе изначально понял, о чем речь. Все вышеизложенное применимо к вашему случаю - т.е. штатно вряд ли получится.

    Однако, теоретически, задача решаемая. Ковырнул ради интереса:
    Код (Text):
    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[] и можно кормить этим класслоадер...
     
  5. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Спасибо... Пускай уж лучше код дублируется, чем такие костыли ваять...
     
Загрузка...
Похожие Темы - Managed Beans Java
  1. radiomilit
    Ответов:
    1
    Просмотров:
    1.509
  2. serg777
    Ответов:
    1
    Просмотров:
    1.612
  3. pastorixx
    Ответов:
    0
    Просмотров:
    1.363
  4. -Cherry-
    Ответов:
    0
    Просмотров:
    1.340
  5. ALV
    Ответов:
    0
    Просмотров:
    1.386

Поделиться этой страницей