Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Часть вторая   Во второй части мы завершаем рассмотрение AdminP. В ней рассмотрены запросы междоменного администрирования и способы управления функциями AdminP с помощью настроек документа сервера, команд консоли сервера, файла Notes.ini и интервалов очистки базы данных. В этой статье предполагается, что вы опытный администратор Domino и прочитали первую часть
О Notes Читать статью
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 


Шаблоны и примеры

Главная   Библиотека   Шаблоны и примеры

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть первая

Николай Норкин

г. Киров

notesnet@notesnet.ru

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть вторая

Новый цикл материалов проекта NotesNet.RU начинается описанием сервлета UploadProcess - решения для обработки post-запросов к http-задаче сервера Domino

Стандартная обработка Post-запросов HTTP-задачей Domino предусматривает либо обработку на уровне ответной формы (сохранение документа - запросы ?createDocument и ?saveDocument с дополнительной обработкой webQuerySave-агентом), либо обработку непосредственно агентом

И в том, и в другом случае автору не удалось решить задачу обработки загружаемых данных с возможностью гибкой обработки файлов до момента их сохранения в базе Lotus Domino. Собственно, само сохранение без обработки агентом вообще не предусматривает какие-либо манипуляции с файлами. При обработке агентом автор не смог получить содержимое Post-запроса до его обработки web-engine Domino

Вот такой код, выгружающий в поток значения из айтемов request_content_xxx, добирается до содержимого уже после его преобразования в текстовый вид да ещё и в кодировке CP850

Session session = getSession();

AgentContext agentContext = session.getAgentContext();

lotus.domino.Document document = agentContext.getDocumentContext();

java.util.Vector streams = new java.util.Vector();

streams.add(new java.io.ByteArrayInputStream("Content-Type: multipart/form-data;  charset=Windows-1251; boundary=\"".concat(header).concat("\"\r\n\r\n").getBytes("UTF-8")));

if (this.document.hasItem("request_content")) {

item = this.document.getFirstItem("request_content");

streams.add(item.getInputStream());

}

else {

for (int i = 0; i < 1000; i++) {

String itemname = "request_content_";

String suffix = "000";

suffix = suffix.concat(new Integer(i).toString());

suffix = suffix.substring(suffix.length() - 3);

itemname = itemname.concat(suffix);

if (this.document.hasItem(itemname)) {

item = this.document.getFirstItem(itemname);

streams.add(item.getInputStream());

}

}

}

streams.add(new java.io.ByteArrayInputStream("\r\n--".concat(header).concat("--").getBytes("UTF-8")));

stream = new java.io.SequenceInputStream(streams.elements());

java.io.ByteArrayOutputStream byteStream = new java.io.ByteArrayOutputStream();

byte[] buffer = new byte[1024];

while (true) {

int r = stream.read(buffer);

if (r == -1) break;

byteStream.write(buffer, 0, r);

}

Попробовав выковырять содержимое post-запроса различными способами, но так и не добившись нужного результата в коде агента Notes, автор перенёс решение на сервлет, и в настоящем материале представляет данное решение

Сервлет разрабатывался в среде Eclipse IDE 4.10, протестирован для работы в среде Lotus Domino 8.5.3 и 10.0 и работает в настоящее время на сервере Domino 8.5.3 под Linux

Для обработки multipart-содержимого запроса использовался пакет проекта Apache Commons FileUpload, для сохранения файлов в документе Notes слегка модернизированный пакет Memo (смотри предыдущий материал NotesNet.RU)

Дополнительно (кроме Notes.jar) к проекту были подключены пакеты


Ну, и ещё один необходимый элемент для работы сервлета. Поскольку решение претендует на универсальность обработки запросов, никак не обойтись без базы настроечных документов для обработки различных post-запросов к сервлету (скачать архив)

Сам настроечный документ будет иметь следующий вид


Примечание.Процесс написания материала идёт параллельно с доработкой функционала сервиса. Поэтому архив базы настроек впоследствии будет обновлен, некоторые расхождения в публикуемых фрагментах кода и выложенном по завершении материала пакете кода также возможны

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть вторая

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть третья

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть четвёртая

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть пятая

Код сервлета

Ссылки

Java в Domino. Библиотека Memo

Apache Commons FileUpload

Задача Domino HTTP. Агент Скачать файлы одним архивом и обработка отдаваемых пользователю файлов
 
  Опубликовано — 02/07/2021 |    



Добавить комментарий
Имя * :
e-mail
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU