Как хранить ссылки на объекты на протяжении жизни всего клиента?

Тема в разделе "Lotus - Программирование", создана пользователем fedotxxl, 1 июл 2009.

  1. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Всем привет =)
    Предположим у меня есть вид / база, к которому пользователь часто обращается, пока работает в среде. Зачем мне постоянно получать данные объекты (Set db = ns..., Set nv = db...). Что если один раз получить и дальше хранить в памяти? Как можно сохранить объект, пока пользователь работает в LN? Может CAPI, могёт ещё какие-нить нестандартные конструкции?
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    На итертрасте было про это дело обсуждение пару лет назад:
    Там было и про объекты, и про очереди и всё такое...
     
  3. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Да, читал когда-то.
    Я по идее именно эту тему и искал, но сразу не нашёл.

    Скажу сразу, что сам не пробовал :)
     
  5. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Потестировал я http://main...D5?OpenDocument

    Получилось:
    Нужно что-то, что будет постоянно поддерживать жизнь объекта "DCN_Obj.ObjCollection"
    Метод Add не может принимать самописные классы. Я так понимаю их где-то нужно регистрировать...

    Есть идеи по развитию?
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    если касается не UI (и не привяз. к LS) - можно обойтись без подобных "извращений"...
    любой класс из jvm библиотек (например lib/ext) будет жить (ежели его там и создать) всё время жизни Нотусов. неНотусёвые классы - точно, Нотусёвые не проверял, но отличий быть не должно
    безо всяких КОМов и винды

    типа вызывем ф-цию из библиотеки - кот. создает объект и возвращает ссылку
     
  7. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    lmike
    Пример можно?
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    готового для выкладывания - нет
    концептуально - я привел схему
    пишем jar , в кот. некая ф-ция
    Код (Text):
    class ExamplePerssistent{
    static Session gses=null;
    public static Session getSession(){
    if(gses==null){
    //Create new session
    ......
    }
    return gses;
    }
    }
    т.о. не создавая инстанса класса (ExamplePersistent): ExamplePersistent.getSession() выдаст некую "глобальную" сессию
    т.к. этот jar "проинициализирован" на всё время жизни Нотусов, то и все его объекты будут обладать подобной жизнью
     
  9. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    давно подобным увлекаюсь действуя по принцыпу давать пользователю уже "обработанные данные", а если он обращается повторно то поднимаю ему их из "кеша"
     
  10. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Уточню задачу
    Как напрямую передать объект из одного клиента в другой
    Вот эта вещь - http://main...D5?OpenDocument - почти позволяет это сделать. Только две проблемы - COM сервер должен быть постоянно кем-то поднят и на самописные классы функция ругается
     
  11. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    это уточнение не даёт ясности...
    чем создание "перманентного" Нотус объекта в java библиотеке не устроит?
    ведь ссылку на него можно получить во время жизни jvm Ноусов, а оно равно жизни инстанса Нотуса
     
  12. vincent_vega

    vincent_vega Lotus team
    Lotus team

    Регистрация:
    2 апр 2005
    Сообщения:
    165
    Симпатии:
    1
    Отличная идея! Спасибо за интерсную идею!
     
  13. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    lmike
    Такой вопрос - можно ли таким образом сохранять в памяти любой объект, заранее неизвестный (т.е. коллекцию, в которую можно добавить/взять любой объект
    И главное - что делать с LS?
     
  14. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    давайте вопрос поделим так:
    -формирование объекта происходит на основе кода (не так ли?), этот код содержится в библиотеках (как пр-ло)
    т.о. создавать объект можно написав любой класс в библиотеке, а сделать его переманентным - вынос за пределы видимости базы (т.е. - внешний jar).
    Объект не может быть неизвестным - ибо его пишет программист ;) Мы конечно можем дойти до RMI или CORBA и добавить (для динамики) рефлекшн, но стоит оно того? ;)

    -какими объектами должен манипулировать LS? Если имеем стринги, их массивы, скалярные переменные - LS2J подойдет. Организовывать колекции можно и на java классах (и даже проще будет)...

    Да - объекты LS передавать не получится, но если на LS не зацикливаться - то оно и не надо.
    Понятно, что сущ. LS код, под такую модель либо переделывать, либо модель не использовать

    одно из серьёзных ограничений - UI, но это (как мне кажется) и КОМ модель не потянет ;)
     
  15. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    забыл ещё одну деталь (неприятную)...
    сцуконотус жвм убивает Thread (даже глобальные), в агентах точно (апосля выхода из агента)
     
  16. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    вспомнил еще одну особливость ;) ...
    swing объекты нотуса не уничтожают ;)
    др. словами - создавая свинговое окошко (класс от JFrame) мы получим его перманентным
    кто хочет удостоверится - пущает jdbcsearch экзампел от Сергея (он выкладывал на Интертрасте)

    а вот в восьмерке - свинг (по-крайней мере под линух 64-бит) не пущается (жалуется на секурити топмост окна AWT)
    это тоже оборимо, но метод убийственный (мне известен) - в секуритях жвм установить пермишн на всё (потому как неизвестно на какой конкретно класс и как надо)
     
Загрузка...

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