Проблема с открытием файла

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

  1. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0
    Доброго времени!
    Есть код(агент) в котором получаю содержимое файла (NotesStream). Если этот агент вызываю другим агентом или по CORBA, то file.Bytes=0(возвращается пустой файл). Есть ли какие-нить ограничения? К примеру что Stream некорректно работает при "удаленном" вызове. Или может я что-то упустил?
    Заранее благодарен за помощь!
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Может с путями что-то?
     
  3. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0
    Нет, тут все норм. хотя, заметил что при удаленном вызове если использовать path типа С:\temp\dir\file.xml то файл не находится. А если с:\file.xml то все норм, в stream определяется кодировка и тд, но данных все равно 0.
    ЗЫ If Not xml_in.Open(filename$) возвращает true, а данных 0 :)
     
  4. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    похоже на путаницу с путями и расположением файла (сервер/клиент)
    на компе есть temp, на серваке - нет, вот и колбасит
     
  5. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0

    If Not xml_in.Open(filename$) возвращает true
     
  6. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Ну так создал новый файл и вернул true.
     
  7. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0
    С чего это создал новый?
     
  8. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    С хелпа. :)
     
  9. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0
    То есть не нашел файл и создал?

    Если так то почему находит если вызывать "напрямую" ?
     
  10. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Ага.
    Напрямую это как?
     
  11. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0
    Правой кнопкой мыши по агенту ->RUN
     
  12. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    потомучта исполняется там, где запущен агент (напрямую)
     
  13. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0
    точно!как то не подумал. написал сетевой путь все заработало.
    Хорошо что это для теста. В норм режиме буду запихивать InputStream(java) в RT и с ним работать без NotesStream.
    Спасибо за подсказку.
     
  14. Anonimous

    Anonimous Well-Known Member

    Регистрация:
    15 июн 2012
    Сообщения:
    120
    Симпатии:
    0
    Можно спросить? Тоже тут с файлами )
    Ситуация такая. Я делаю синхронизацию между лотусовой БД и Web. База лежит на сервере, назову его машина А.
    Т.е. Лотус и Web обмениваются файлами xml, которые лежат в разделяемой папке FolderSh на машине с известным ip, назову ее машина Б.
    В базе на сервере есть агент синхронизации LNSynchronizationFromWeb. Этот агент выполняется либо по расписанию, либо вызывается через браузер запросом URL.
    Агент просто подхватывает файлы xml, которые лежат на машине Б, читает из них данные, по этим данным вносит изменения в документы Лотус. Информация из одного файла предназначена только для одного документа Лотус, в файле xml хранится UNID нужного документа.
    Этот агент выполняется либо по расписанию - подхватывает все файлы в папке и осуществляет массовую синхронизацию.
    Либо выполняет единичную синхронизацию посредством его вызова через запрос в браузере. Например, для файла test. Имя файла передается как параметр, этот файл берется из разделяемой папке - и идет единичная обработка

    http://ip сервера/БД/LNSynchronizationFromWeb?OpenAgent&test

    Если пустить массовую синхронизацию, то все нормально.
    Вот у меня вопрос по доступу к файлам в случае единичной синхронизации.
    На машине Б Лотус не стоит. А Лотус не любит выходить за границы своего каталога, NotesStream не хочет открывать файлы в таком случае. Значит, надо будет клиент Лотус ставить на машине Б, чтоб в папку Data кинуть разделяемую папку FolderSh с файлами?
    Или к файлам как-то можно сетевое имя прописать?

    Я прописываю сетевой путь к папке, указанный в ее свойствах на вкладке "Доступ", но вот при вызове

    stDirLoad$ = {Сетевой путь к папке на вкладке "Доступ"} & "*.*"
    stFName$ = Dir$(stDirLoad$, 0)

    в log пишет ошибку, что директория с таким сетевым именем не найдена.

    Буду очень благодарен за любой совет )
     
  15. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    хм... на самом деле можно подрубиться к сетевому пути.
    Попробуйте подключить ту папку как сетевой диск и обращаться через букву диска. На сервере.
    Вот еще есть почти профильный вопрос, только там сохранение:
    http://codeby.net/ipb.html?s=&sh...st&p=220451

    Однако я не силен с web вызовом агентов и особенностей, возможно агент отрабатывает не на сервере...
     
  16. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    юзер систем - может и не будет нормально работать с сетевыми ресурсами, ведь оно локальный юзер...
    можно:
    - пущать домину под доменной учеткой
    - сделать одноранговую шару на удаленном сервере (не доменную) и завести там локального юзера (соответ домине)
    - соединяться по имени/паролю зашитому в агент, к шаре (вариант неоднозначный)

    Добавлено: а ваще, для сервисных домины нужд юзать виндовые шары - это камасутра какая-то, есть FTP, SSH...
    кот. быстрее/секьюрнее SMB
     
  17. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    Уже много-много раз возникает такого рода вопросы.
    И NotesStram и input\write\dir замечательно работают с разного рода сетевыми шарами. Но только тогда, когда имеется представление о работе сетевых служб Windows:)

    В Вашем случае в св-вах шары достаточно дать права той машины, на которой крутится Домино.
     
  18. Anonimous

    Anonimous Well-Known Member

    Регистрация:
    15 июн 2012
    Сообщения:
    120
    Симпатии:
    0
    А я WNetAddConnection2 мучаю, не могу понять причины того, что оно возвращает 1312

    Здесь нашел

    http://www-10.lotus.com/ldd/46dom.nsf/55c3...e6?OpenDocument

    В Вашем случае в св-вах шары достаточно дать права той машины, на которой крутится Домино.

    А можно подробнее )) С свойствах шары на вкладке "Доступ" в Общем доступе стоит Все.

    Я эту шару и как сетевой диск подключал к машине А (на которой сервер Лотус стоит)
    Все равно по расписанию агент запускается от имени сервера - не находит.

    Еще вот что. На машина А стоит XP, на Б - Windows 7.

    Уже много-много раз возникает такого рода вопросы.

    А где почитать? :(
     
  19. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
  20. Anonimous

    Anonimous Well-Known Member

    Регистрация:
    15 июн 2012
    Сообщения:
    120
    Симпатии:
    0
    УРА! Поехало!
    Только не пойму, что же я такого сделал
    А делал вот что:

    1. У себя, на своей машине (не на машине А или Б) делал подключение к общему сетевому ресурсу в cmd

    net use \\IP-адрес машины Б\C$ Пароль /user:Имя пользователя
    Команда выполнилась успешно

    2. На машине Б вошел в Панель управления - Центр управления сетями и общим доступом - Дополнительные параметры общего доступа и там сделал "Отключить общий доступ с парольной защитой". Теперь включил, правда

    Но работает!
    И еще в варианте использования WNetAddConnection2 (см. ссылочку выше)

    на строке retCode = WNetAddConnection2(netRes, SYS_PASSWORD, SYS_USERNAME, 0)

    SYS_USERNAME пишу так: "Имя домена\Логин пользователя"

    Хотя даже вчерашняя версия агента, где WNetAddConnection2 для входа я не использую, тоже получает доступ к папкам.

    Но вот общий доступ с парольной защитой в дополнительных параметрах Общего доступа я опять включил.
    Не пойму, это, значит я подключил сетевой ресурс с помощью net use, и это все решило?
     
Загрузка...
Похожие Темы - Проблема открытием файла
  1. pbnoob
    Ответов:
    1
    Просмотров:
    2.317
  2. rasim270490
    Ответов:
    3
    Просмотров:
    876
  3. rasim270490
    Ответов:
    2
    Просмотров:
    735
  4. c0de3r
    Ответов:
    4
    Просмотров:
    108
  5. DobermannTT
    Ответов:
    10
    Просмотров:
    129

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