Здравствуйте, vav, Вы писали:
vav>Клиент в браузере отправляет запрос сервлету где я.. vav>1. отвечаю клиенту что запрос принят и возвращаю ему url на несуществующий еще файл vav>2. делаю запрос к БД, где получаю отчет vav>3. сбрасываю отчет в файл, чтобы пользователь мог его забрать по вышеуказанному адресу.
vav>Теперь вопросы: vav>1. не изобретаю ли велосипед? может есть стандартные решения на эту тему?
Готовых решений не встречал. Хотя проблема вроде стандартная.
vav>2. будут ли какие-то проблемы с защитой? вроде как есть какие-то ограничения на работу с файловой системой..
Нет, не будет. Ограничения на работу с файловой системой по умолчанию присутствует у апплетов.
vav>3. Как задать случайное имя файла (аналог GetTempFileName)?
Даже круче есть — сразу файл создаёт:
File.createTempFile(...)
vav>может все же есть какие-то ограничения на запись? vav>в логах vav>2005-10-28 16:39:22,843 [http8080-Processor4] DEBUG [Adapter] java.io.FileNotFoundException: /TestAdapter/DATAFILES/aaa.txt (No such file or directory)
vav>или путь нужно писать как-то иначе?
req.getContextPath() не имеет никакого отношения к файловой системе. Так же в общем случае ты не можешь писать в "~/webapps/TestAdapter/", так как TestAdapter может быть не только ддиректориеей, но и war файлом.
Здравствуйте, Аноним, Вы писали:
А>А зачем вообще с какими-то файлами дело иметь? А>Клиент шлет запрос на какой-то репорт, А>а сервер в респонзе отдает клинту данные из базы.
А то что сбор всех данных и формирование отчета может быть довольно долгим для отклика мы не думаем? А если отчет большой и у клиента закачка оборвется мы будем заново его формировать, или начнем кэш изобретать? А большие файлы в памяти наверное не удобно хранить и кэш в файлы начнем сбрасывать?
Клиент в браузере отправляет запрос сервлету где я..
1. отвечаю клиенту что запрос принят и возвращаю ему url на несуществующий еще файл
2. делаю запрос к БД, где получаю отчет
3. сбрасываю отчет в файл, чтобы пользователь мог его забрать по вышеуказанному адресу.
Теперь вопросы:
1. не изобретаю ли велосипед? может есть стандартные решения на эту тему?
2. будут ли какие-то проблемы с защитой? вроде как есть какие-то ограничения на работу с файловой системой..
3. Как задать случайное имя файла (аналог GetTempFileName)?
Здравствуйте, vav, Вы писали:
vav>Теперь вопросы: vav>1. не изобретаю ли велосипед? может есть стандартные решения на эту тему? vav>2. будут ли какие-то проблемы с защитой? вроде как есть какие-то ограничения на работу с файловой системой.. vav>3. Как задать случайное имя файла (аналог GetTempFileName)?
не знаю насчет вылосипеда, но я делал так:
при запросе пользера, отчет складывался в файл в некой апачевской директории и просто потом
отдавал пользователю урл на этот файл, с которого он его забирал, имя файла формировалось из
iD сессии + System.currentTimeMillis()
может все же есть какие-то ограничения на запись?
в логах
2005-10-28 16:39:22,843 [http8080-Processor4] DEBUG [Adapter] java.io.FileNotFoundException: /TestAdapter/DATAFILES/aaa.txt (No such file or directory)
или путь нужно писать как-то иначе?
Re: Tomcat, reportfile
От:
Аноним
Дата:
28.10.05 13:45
Оценка:
Здравствуйте, vav, Вы писали:
А зачем вообще с какими-то файлами дело иметь?
Клиент шлет запрос на какой-то репорт,
а сервер в респонзе отдает клинту данные из базы.
Здравствуйте, vav, Вы писали:
vav>String fullPathToTmpFile = req.getContextPath() + "/DATAFILES/" + tmpFileName; vav>может все же есть какие-то ограничения на запись? vav>в логах vav>2005-10-28 16:39:22,843 [http8080-Processor4] DEBUG [Adapter] java.io.FileNotFoundException: /TestAdapter/DATAFILES/aaa.txt (No such file or directory) vav>или путь нужно писать как-то иначе?
не прописывай путь через ContextPath() он тебе и не даст туда ничё записать, пропиши путь например так "/usr/local/www/DATAFILES/" + tmpFileName